如果我有这个部门:
<div class="wikicontent" id="wikicontentid">
如何使用Python打印该标签及其标签?内容?
答案 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