如何抓取网页数据( 3.LxmlLxml网页源码(css选择器)性能对比与结论 )

优采云 发布时间: 2022-03-13 02:13

  如何抓取网页数据(

3.LxmlLxml网页源码(css选择器)性能对比与结论

)

  from bs4 import BeautifulSoup

>>> soup = BeautifulSoup(html, "html.parser") #用html解释器对得到的html文本进行解析

>>> tr = soup.find(attrs={"id":"places_area__row"})

>>> tr

Area: 244,820 square kilometres

>>> td = tr.find(attrs={"class":"w2p_fw"})

>>> td

244,820 square kilometres

>>> area = td.text

>>> print(area)

244,820 square kilometres

  3. Lxml

  Lxml 是一个基于 XML 解析库 libxml2 的 Python 包。这个模块是用C语言编写的,解析速度比BeautifulSoup还要快。经过书中的对比分析,抓取网页后抓取数据的一般步骤是:先解析网页源码(这三种方法中使用lxml),然后选择抓取数据(css选择器)

  #先解析网页源码(lxml)示例

import lxml.html

broken_html = "AreaPopulation"

tree = lxml.html.fromstring(broken_html) #解析已经完成

fixed_html = lxml.html.tostring(tree, pretty_print=True)

print(fixed_html)

#output

#b'\nArea\nPopulation\n\n'

  #解析网页源码(lxml)后使用css选择器提取目标信息

import lxml.html

import cssselect

html = download("http://example.webscraping.com/view/Aland-Islands-2") #下载网页

html = str(html)

tree = lxml.html.fromstring(html) #解析已经完成

td = tree.cssselect("tr#places_area__row > td.w2p_fw")[0] #选择id="plac..."名为tr的标签下的,class="w2p..."名为td的标签中[0]元素

area = td.text_content() #目标信息area值为td标签中的text信息

print(area)

  

  上述三种方法的性能比较和结论:

  

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线