Web抓取

Web站点使用HTML描述,这意味着每个web页面是一个结构化的文档。有时从中 获取数据同时保持它的结构是有用的。web站点不总是以容易处理的格式, 如 csv 或者 json 提供它们的数据。

这正是web抓取出场的时机。Web抓取是使用计算机程序将web页面数据进行收集 并整理成所需格式,同时保存其结构的实践。

lxml和Requests

lxml(http://lxml.de/)是一个优美的扩展库,用来快速解析XML以及HTML文档 即使所处理的标签非常混乱。我们也将使用 Requests (http://docs.python-requests.org/en/latest/#)模块取代内建的urllib2模块,因为其速度更快而且可读性更好。你可以通过使用 pip install lxml 与 pip install requests 命令来安装这两个模块。

让我们以下面的导入开始:

from lxml import html
import requests

下一步我们将使用 requests.get 来从web页面中取得我们的数据, 通过使用 html 模块解析它,并将结果保存到 tree 中。

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:579817333
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
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,你可以右键元素,选择 ‘Inspect element’,高亮这段代码, 再次右击,并选择 ‘Copy XPath’。

在进行一次快速分析后,我们看到在页面中的数据保存在两个元素中,一个是title是 ‘buyer-name’ 的div,另一个class是 ‘item-price’ 的span:

知道这个后,我们可以创建正确的XPath查询并且使用lxml的 xpath 函数, 像下面这样:

让我们看看我们得到了什么:

恭喜!我们已经成功地通过lxml与Request,从一个web页面中抓取了所有我们想要的 数据。我们将它们以列表的形式存在内存中。现在我们可以对它做各种很酷的事情了: 我们可以使用Python分析它,或者我们可以将之保存为一个文件并向世界分享。

我们可以考虑一些更酷的想法:修改这个脚本来遍历该例数据集中剩余的页面,或者 使用多线程重写这个应用从而提升它的速度。

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

  1. [229]python3的requests类抓取中文页面出现乱码的解决办法

    这种乱码现象基本上都是编码造成的,我们要转到我们想要的编码,先po一个知识点,嵩天老师在Python网络爬虫与信息提取说到过的:response.encoding是指从HTTP的header中猜测的响 ...

  2. Python练习 requests+BeautifulSoup抓取ZD页面

    import requests from bs4 import BeautifulSoup #保存url列表为文件with open('a.txt', 'w') as f: def url_list( ...

  3. Python requests 多线程抓取 出现HTTPConnectionPool Max retires exceeded异常

    Python requests 多线程抓取 出现HTTPConnectionPool Max retires exceeded异常 参考文章: (1)Python requests 多线程抓取 出现H ...

  4. Python爬虫之requests+正则表达式抓取猫眼电影top100以及瓜子二手网二手车信息(四)...

    requests+正则表达式抓取猫眼电影top100 一.首先我们先分析下网页结构 可以看到第一页的URL和第二页的URL的区别在于offset的值,第一页为0,第二页为10,以此类推. 二.< ...

  5. 用requests获取网页源代码 python-Python3使用requests包抓取并保存网页源码的方法

    本文实例讲述了Python3使用requests包抓取并保存网页源码的方法.分享给大家供大家参考,具体如下: 使用Python 3的requests模块抓取网页源码并保存到文件示例: import r ...

  6. Python之 - 使用Scrapy建立一个网站抓取器,网站爬取Scrapy爬虫教程

    Scrapy是一个用于爬行网站以及在数据挖掘.信息处理和历史档案等大量应用范围内抽取结构化数据的应用程序框架,广泛用于工业. 在本文中我们将建立一个从Hacker News爬取数据的爬虫,并将数据按我 ...

  7. Python爬虫:抓取多级页面数据

    前面讲解的爬虫案例都是单级页面数据抓取,但有些时候,只抓取一个单级页面是无法完成数据提取的.本节讲解如何使用爬虫抓取多级页面的数据. 在爬虫的过程中,多级页面抓取是经常遇见的.下面以抓取二级页面为例, ...

  8. Python爬虫 | 斗图网表情包抓取

    Python爬虫 | 斗图网表情包抓取 1.数据来源分析 2.制作div_list 3.发起请求 4.保存图片 5.批量获取 6.完整代码 声明 1.数据来源分析   打开斗图吧的主页,发现网址非常有 ...

  9. python实现食品推荐_通过Python语言实现美团美食商家数据抓取

    首先,我们先来打开美团美食商家页面,来分析一下. 如上面所提供的URL即为美团美食商家页面.或者我们通过美团官网打开一个美团美食商家页面,打开步骤如下:1.打开浏览器,输入 即可打开美团北京首页 2. ...

最新文章

  1. SVN更换修改用户名
  2. java 线程关闭小结(转)
  3. spring boot集成swagger,自定义注解,拦截器,xss过滤,异步调用,定时任务案例...
  4. python没用_大部分Python资料都没有说到的重点-用实战教你解决问题的思路
  5. C语言程序流程设计之循环【程序流程设计】(13)
  6. MySQL概要——《深究MySQL》
  7. vs2015 linux jni,使用Visual C++ 跨平台移动技术调试JNI Android 应用程序
  8. WIN10系统如何取消任务栏处的窗口缩略图
  9. java web容器原理_javaWeb工作原理
  10. java-JSON: Expected value at 1:0 错误
  11. 一种快速构造和获取URL查询参数的方法:URLSearchParams
  12. $《第一行代码:Android》读书笔记——第6章 数据持久化
  13. 华为交换机OSPF和BGP知识
  14. 东南大学硕士毕业论文Latex 模版教程
  15. 算法训练 - 黑色星期五 有些西方人比较迷信,如果某个月的13号正好是星期五,他们就会觉得不太吉利,用古人的说法,就是“诸事不宜”。请你编写一个程序,统计出在某个特定的年份中,出现了多少次既是13号又
  16. html5 vue bootstrap学习报告
  17. 对vue与angular和react的对比
  18. 基于GAN的图像修复--论文笔记
  19. 程序员提升逼格技巧汇总
  20. 天翼云无法连接mysql_天翼云Linux主机异常

热门文章

  1. video标签 添加视频
  2. 剑指 offer set 28 实现 Singleton 模式
  3. Initialization SQL Statement – Custom 配置错误,导致无法加载FORM
  4. Android 拍照是开启(调用)闪光灯(原创)
  5. spark将rdd转为string_大数据技术之SparkCore(三)RDD依赖关系
  6. 自由自在休闲食品意式手工冰淇淋 百变不离健康
  7. 【转】SAP开关账期后台任务
  8. SAP中各种分摊分配方法
  9. 释疑の语法 ON CHANGE OF
  10. 物料分类账的基本原理