httpunit 抓取网页( web抓取web站点之lxml和Requestsinstall安装requests和pip)

优采云 发布时间: 2021-12-03 23:20

  httpunit 抓取网页(

web抓取web站点之lxml和Requestsinstall安装requests和pip)

  

  网页抓取

  该网站是用 HTML 语言编写的,这意味着每个网页都是一个结构化的文档。有时,我们可以使用当前的结构来获取所需的数据并保留数据格式,但通常我们无法以合适的结构获取数据(不像csv和json)。

  网页抓取会在适当的时候出现。网页抓取可以利用计算机程序对网页进行过滤,获取适当结构下的目标数据,同时保留数据的格式。

  lxml 和请求

  lxml 是一个优秀的 Python 扩展库,用于快速解析 XML 和 HTML 文档,甚至可以处理错误标签。另外,我们还使用Requests代替了内置的urllib2,因为它在速度和稳定性方面更好。您可以使用 pip install lxml 和 pip install requests 安装请求和 pip。

  首先,让我们从导入开始:

  from lxml import html

import requests

  其次,我们使用requests.get查找网页,使用lxml的html库解析网页,并将结果保存在树中:

  page = requests.get('http://econpy.pythonanywhere.com/ex/001.html')

tree = html.fromstring(page.content)

  tree 现在以整洁的树结构收录所有 HTML 内容。我们可以通过XPath和CSSSelect两种方式来获取树结构中的数据。在本文中,我们使用前者。

  XPath 是一种在结构化文档(如 HTML 和 XML 文档)中定位信息的方法。XPath的介绍请参考W3Schools。

  获取元素的XPath的工具有很多,比如Firefox中的FireBug,Chrome中的开发者工具。如果您使用的是 Chrome,您可以右键单击该元素,选择“检查元素”,在 HTML 查看器中突出显示此 HTML 代码,再次右键单击并选择“复制 XPath”。

  经过快速分析,可以了解到该页面上的数据收录在两类元素中。一个是title为buyer-name的div,另一个是class为item-price的span

  :

  Carson Busses

$29.95

  了解以上内容后,我们就可以创建对应的XPath地址检索并使用lxml的xpath功能,代码如下:

  #这将获取到一个buyers列表

buyers = tree.xpath('//div[@title="buyer-name"]/text()')

#这将获取到一个prices列表

prices = tree.xpath('//span[@class="item-price"]/text()')

  我们来看看最终得到的数据:

  print 'Buyers: ', buyers

print 'Prices: ', prices

  Buyers: ['Carson Busses', 'Earl E. Byrd', 'Patty Cakes',

'Derri Anne Connecticut', 'Moe Dess', 'Leda Doggslife', 'Dan Druff',

'Al Fresco', 'Ido Hoe', 'Howie Kisses', 'Len Lease', 'Phil Meup',

'Ira Pent', 'Ben D. Rules', 'Ave Sectomy', 'Gary Shattire',

'Bobbi Soks', 'Sheila Takya', 'Rose Tattoo', 'Moe Tell']

Prices: ['$29.95', '$8.37', '$15.26', '$19.25', '$19.25',

'$13.99', '$31.57', '$8.49', '$14.47', '$15.86', '$11.11',

'$15.98', '$16.27', '$7.50', '$50.85', '$14.26', '$5.68',

'$15.00', '$114.07', '$10.09']

  恭喜!我们已经使用 lxml 和 Requests 从网页中获取所需的数据。我们将数据作为列表存储在内存中。现在我们可以做各种有趣的事情:我们可以用python分析数据,或者我们可以将其保存为文件并共享。

  还有更多有趣的事情需要考虑,例如修改脚本使其可以遍历示例网页中的所有页面数据,或者使用多个线程重写应用程序以提高其速度。

  备注XPath的引入因为不能访问所以改成对应的地址。

  这篇文章是翻译中的 HTML Scraping 文章。整个教程非常好,适合新手和老手学习。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线