php抓取网页表格信息( 用Pyhton自带的urllib或urllib2模块抓取网页或许有些了,)

优采云 发布时间: 2022-03-11 16:25

  php抓取网页表格信息(

用Pyhton自带的urllib或urllib2模块抓取网页或许有些了,)

  Python 使用 lxml 模块和 Requests 模块抓取 HTML 页面的教程

  更新时间:2016-05-16 18:53:56 作者:Kenneth Reitz

  使用 Pyhton 附带的 urllib 或 urllib2 模块来爬取网页可能是陈词滥调。今天我们将玩一些新的东西,并看一个使用 lxml 模块和 Requests 模块来爬取 HTML 页面的 Python 教程:

  网页抓取

  网站是使用 HTML 描述的,这意味着每个网页都是一个结构化的文档。有时在保持其结构的同时从中获取数据很有用。网站并不总是以易于处理的格式(例如 csv 或 json)提供其数据。

  这就是网络抓取发挥作用的时候。网页抓取是使用计算机程序采集网页数据并将其组织成所需格式同时保留其结构的做法。

  lxml 和请求

  lxml() 是一个漂亮的扩展库,即使在处理非常混乱的标签时也能快速解析 XML 和 HTML 文档。我们还将使用 Requests (#) 模块而不是内置的 urllib2 模块,因为它更快且更具可读性。您可以使用 pip install lxml 和 pip install requests 命令安装这两个模块。

  让我们从以下导入开始:

  from lxml import html

import requests

  接下来我们将使用 requests.get 从网页中获取我们的数据,使用 html 模块对其进行解析,并将结果保存到树中。

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

tree = html.fromstring(page.text)

  tree 现在将整个 HTML 文件收录在一个优雅的树结构中,我们可以使用两种方法访问它:XPath 和 CSS 选择器。在本例中,我们将选择前者。

  XPath 是一种在结构化文档(如 HTML 或 XML)中定位信息的方法。有关 XPath 的良好介绍,请参阅 W3Schools。

  有许多工具可以获取元素的 XPath,例如用于 Firefox 的 FireBug 或用于 Chrome 的 Inspector。如果您使用的是 Chrome,您可以右键单击元素,选择“检查元素”,突出显示代码,再次右键单击,然后选择“复制 XPath”。

  经过快速分析,我们看到页面中的数据存储在两个元素中,一个标题为“buyer-name”的 div 和一个名为“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 和 Request 成功地从网页中抓取了我们想要的所有数据。我们将它们作为列表存储在内存中。现在我们可以用它做各种很酷的事情:我们可以使用 Python 分析它,或者我们可以将它保存为文件并与世界分享。

  我们可以想到一些更酷的想法:修改脚本以遍历示例数据集中的剩余页面,或者重写应用程序以使用多线程加速。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线