python抓取动态网页(Python使用lxml模块和Requests模块抓取HTML页面的教程的相关内容吗)

优采云 发布时间: 2022-01-12 11:23

  python抓取动态网页(Python使用lxml模块和Requests模块抓取HTML页面的教程的相关内容吗)

  想知道Python使用lxml模块和Requests模块抓取HTML页面的教程的相关内容吗?Kenneth Reitz 将为大家讲解 Python 使用 lxml 和 Requests 抓取 HTML 的相关知识以及一些代码示例。欢迎阅读和指正。我们先来关注一下:Python、lxml、Requests、HTML一起学习

  网页抓取

  使用 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人工客服


线