php抓取网页title( 用Pyhton自带的urllib或urllib2模块(二)|,)

优采云 发布时间: 2021-12-09 22:12

  php抓取网页title(

用Pyhton自带的urllib或urllib2模块(二)|,)

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

  更新时间:2016 年 5 月 16 日 18:53:56 作者:Kenneth Reitz

  使用 Pyhton 的内置 urllib 或 urllib2 模块来抓取网页可能有点陈词滥调。今天我们将玩一些新鲜的。查看有关使用 lxml 模块和请求模块抓取 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人工客服


线