如何从python的html文件中删除除选定标记之外的所有内容?

时间:2014-03-25 22:54:20

标签: python html python-2.7 python-3.x

如果我有这个部门:

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

如何使用Python打印该标签及其标签?内容?

3 个答案:

答案 0 :(得分:1)

您可以使用BeautifulSoup

import bs4

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

答案 1 :(得分:1)

使用Beautiful Soup模块。

>>> import bs4

假设我们有一个包含多个div的文档,一些与类匹配,一些与id匹配,另一个同时执行这两个:

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

我们可以用Beautiful Soup解析:

>>> 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_

要匹配类,请使用>>> 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>'

但你可以把它变成一个:

{{1}}

答案 2 :(得分:0)

要下载页面源代码使用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