OK,上次我们说到了网页爬虫的一个思路:首先说一下网页爬虫的整个思路方法:先爬取整个网页,也就是将网页的源代码给获取下来

爬取下来的网页再通过文本解析提取,找到我们需要的信息,可以是图片或者文字

然后我们入门了python里一个非常好用的HTTP客户端库:Requests,用来请求网址,以及得到一些响应内容,例如网页的源代码。

得到网页源代码之后,我们就可以来对网页中的一些信息做一些解析提取。

我们这里介绍lxml库和XPath语法来帮助我们完成信息的提取。

# 本文Python代码版本2.7

XPath

XPath 是一门在 XML 文档中查找信息的语言。XPath 可用来在 XML 文档中对元素和属性进行遍历,我们用来提取格式为HTML的网页源码效率也相当高,可以遍历html的各个标签和属性,来定位到我们需要的信息的位置,并提取。

1,安装

需要安装lxml库

pip install lxml

2,语法

举例子之前来个常规语法介绍。详细可参见W3school的XPath语法介绍。

3,案列说明

直接来个案例吧。这个网址:豆瓣电影排行榜

这里用谷歌浏览器打开开发者工具查看网页源代码(windows在谷歌浏览器界面按F12或者‘设置 -> 开发者工具’。Mac用户两个手指轻点页面-> “检查”)

鼠标移动到“豆瓣电影排行榜”,对应右边的开发者工具就会选中相应的标签,即图中的:

豆瓣电影排行榜

那我们试着用xpath来获取这个这个h1标签:

# coding:utf-8

import requests

# 上节的requests请求网页,得到网页源代码

url = 'https://movie.douban.com/chart'

r = requests.get(url).content

# 导入lxml库和html.fromStringh函数来解析html

from lxml import html

# 调用html.fromString函数解析html源代码

sel = html.fromstring(r)

# 提取h1标签,text()获取该标签下的文本

title = sel.xpath("//h1/text()")

#这里返回的类型列表,而这个网页中只有一个h1标签,索引为0来得到title

print type(title)

print title[0]

打印出来就得到我们需要的h1标签的标题:

#

# 豆瓣电影排行榜

再来看看提取属性方法,例如下面的这些电影的链接列表,是在a标签中的href属性中。

要想精确的定位到该标签,我们能可以先定位到这个a标签的父标签div,

...

因此可以写成:

# coding:utf-8

import requests

from lxml import html

url = 'https://movie.douban.com/chart'

r = requests.get(url).content

sel = html.fromstring(r)

# 提取h1标签

title = sel.xpath("//h1/text()")

# 提取链接

links = sel.xpath('//div[@class="pl2"]/a/@href')

# 上面返回的是所有符合条件的链接的列表,for循环来读取一下

for link in links:

print link

控制台打印输出:

4,最后

以上就是xpath的常见的用法,提取网页信息一个高效的工具。大家可以试试提取这个网站的电影名称,评分等等信息来练练手。

2,w3school的xpath语法教程:XPath 教程

python xpath爬虫_Python爬虫(2):XPath语法相关推荐

  1. python的xpath用法_Python爬虫杂记 - Xpath高级用法

    xpath 高级用法 1. 匹配当前节点下的所有: .// . 表示当前 // 表示当前标签下的所有标签 注: 要配合使用 2. 匹配某标签的属性值: /@属性名称 这里以input里的value值为 ...

  2. python从入门到爬虫_python爬虫从入门到放弃(一)之初识爬虫

    什么是爬虫? 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.另外一些不常使用的名字还有蚂蚁.自动索引. ...

  3. python pipeline框架_Python爬虫从入门到放弃(十六)之 Scrapy框架中Item Pipeline用法...

    原博文 2017-07-17 16:39 − 当Item 在Spider中被收集之后,就会被传递到Item Pipeline中进行处理 每个item pipeline组件是实现了简单的方法的pytho ...

  4. monthy python爬虫_Python爬虫DOTA排行榜爬取实例(分享)

    Python爬虫DOTA排行榜爬取实例(分享) 1.分析网站 打开开发者工具,我们观察到排行榜的数据并没有在doc里 doc文档 在Javascript里我么可以看到下面代码: ajax的post方法 ...

  5. python科技限制_Python爬虫怎么突破限制?经常遇到这四种限制突破方法

    Python爬虫常常用于搜索引擎,也可以进行数据的采集,现在很多企业都需要通过爬虫进行数据的采集,来分析市场的变化,同行的情况,还可以进行价格的对比等等.但是你的同行并不想让你获得这些信息,会在网站上 ...

  6. 51自学网python爬虫_Python爬虫基本流程

    爬虫定义 爬虫是请求网站并提取自己所需要数据的过程.通过我们的程序,可以代替我们向服务器发送请求,然后进行批量的数据下载. 爬虫基本流程 发起请求 通过url向服务器发送requests请求,请求可以 ...

  7. python xpath循环_Python爬虫 爬取北京二手房数据

    点击蓝字"python教程"关注我们哟! 前言 Python现在非常火,语法简单而且功能强大,很多同学都想学Python!所以小的给各位看官们准备了高价值Python学习视频教程及 ...

  8. python xpath入门_python爬虫入门实战(三)!xpath 和 csv!

    最近有小伙伴说正则表达式学不懂?那有什么替代方案呢?一起往下看吧! 在前两篇文章我们已经学了一些基本技巧.但是之前都是用正则表达式来解析内容的,可能有小伙伴对正则表达式不理解,于是乎,我找到一个相对好 ...

  9. hadoop 爬虫_python爬虫知识点梳理:带你全面入门python爬虫

    今天主要跟大家谈谈爬虫,尤其是刚入门的伙伴,少走弯路!文末附全套的视频版Python学习教程,含爬虫教程!希望大家能够把文字部分看完!做一个梳理! 在学习爬虫之前我们需要明白的一个问题: 爬虫能做什么 ...

最新文章

  1. thinphp 整合ueditor
  2. CC++面试题大汇总
  3. linux 磁盘检测卡主_Linux启动过程
  4. 【数据结构】用栈解决表达式求值问题
  5. Java 函数式接口以及Lambda举例
  6. Ubuntu -- 安装、卸载程序的命令
  7. gRPC基础--Protobuf编码格式详解
  8. ScalaTour 2.函数
  9. 傅里叶光学-函数简介
  10. 用把百分数转换成a,b,c,d,e等级
  11. sqlite 多条件查询
  12. 虚拟机linux装无线网卡驱动,linux无线网卡驱动安装
  13. 卸载企业版360 含密码
  14. win7 无法访问服务器共享文件夹,win7系统共享文件夹无法访问的解决方法
  15. GNSS测量与数据处理(2)
  16. SOAP Web服务
  17. 第三章-OpenCV基础-4-掩模
  18. 解析json格式请求返回500状态码的异常
  19. 数学黑洞(一)令人拍案叫绝的卡布列克常数
  20. mysql数据库之备份和恢复

热门文章

  1. mysql count if语句_COUNT分组条件去重的sql统计语句示例(mysql)
  2. linux rar解压_linux命令
  3. Kotlin 越来越牛逼了!学Java都我想转了!
  4. 并发基础(九) java线程的终止与中断
  5. JDBC连接mysql--学习目录
  6. {网络编程}和{多线程}应用:基于UDP协议【实现多发送方发送数据到同一个接收者】--练习
  7. json数据格式 python_python中json是什么文件格式
  8. swift 项目_如何对iOS项目进行静态分析
  9. Java 里的HashMap(HashTable) 简介.
  10. 关于mount --bind的理解。