簡體   English   中英

如何從python的html文件中刪除除選定標記之外的所有內容?

[英]How can I remove everything except a selected tag from a html file with python?

如果我有這個部門:

<div class="wikicontent" id="wikicontentid">

我如何使用Python來打印該標簽及其內容?

你可以使用BeautifulSoup

import bs4

soup =  bs4BeautifulSoup(html_content);
result = soup.find("div", { "class" : "wikicontent", "id" : "wikicontentid" })

使用Beautiful Soup模塊。

>>> import bs4

假設我們有一個包含許多div的文檔,一些與類匹配,一些與id匹配,另一個同時執行:

>>> html = '<div class="wikicontent">blah1</div><div class="wikicontent" id="wikicontentid">blah2</div><div id="wikicontentid">blah3</div>'

我們可以用美麗的湯解析:

>>> soup = bs4.BeautifulSoup(html)

要找到所有的div:

>>> soup.find_all('div')
[<div class="wikicontent">blah1</div>, <div class="wikicontent" id="wikicontentid">blah2</div>, <div id="wikicontentid">blah3</div>]

這是一個bs4.element.ResultSet包含三個bs4.element.Tag您可以通過提取[]運營商。

要查找與給定id匹配的所有內容,請使用id關鍵字參數:

>>> soup.find_all(id='wikicontentid')
[<div class="wikicontent" id="wikicontentid">blah2</div>, <div id="wikicontentid">blah3</div>]

要匹配類,請使用class_ keyword參數(注意下划線):

>>> soup.find_all(class_='wikicontent')
[<div class="wikicontent">blah1</div>, <div class="wikicontent" id="wikicontentid">blah2</div>]

您可以在一次調用中組合這些選擇器:

>>> soup.find_all('div', class_='wikicontent', id='wikicontentid')
[<div class="wikicontent" id="wikicontentid">blah2</div>]

如果您知道只有一場比賽或者您只對第一場比賽感興趣,請使用soup.find

>>> soup.find(class_='wikicontent', id='wikicontentid')
<div class="wikicontent" id="wikicontentid">blah2</div>

和以前一樣,這不是一個字符串,

>>> type(soup.find('div', class_='wikicontent', id='wikicontentid'))
<class 'bs4.element.Tag'>

但你可以把它變成一個:

>>> str(soup.find('div', class_='wikicontent', id='wikicontentid'))
'<div class="wikicontent" id="wikicontentid">blah2</div>'

要下載頁面源,請使用http://docs.python-requests.org/en/latest/ ,對於解析html / css標簽,請使用http://lxml.de/

import requests
import lxml.html

dom = lxml.html.fromstring(requests.get('http://theurlyourscraping.com').content)
wikicontent = [x for x in dom.xpath('//div[@class="wikicontent"]/text()')]
print wikicontent

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM