python xpath爬虫_Python爬虫(2):XPath语法
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语法相关推荐
- python的xpath用法_Python爬虫杂记 - Xpath高级用法
xpath 高级用法 1. 匹配当前节点下的所有: .// . 表示当前 // 表示当前标签下的所有标签 注: 要配合使用 2. 匹配某标签的属性值: /@属性名称 这里以input里的value值为 ...
- python从入门到爬虫_python爬虫从入门到放弃(一)之初识爬虫
什么是爬虫? 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.另外一些不常使用的名字还有蚂蚁.自动索引. ...
- python pipeline框架_Python爬虫从入门到放弃(十六)之 Scrapy框架中Item Pipeline用法...
原博文 2017-07-17 16:39 − 当Item 在Spider中被收集之后,就会被传递到Item Pipeline中进行处理 每个item pipeline组件是实现了简单的方法的pytho ...
- monthy python爬虫_Python爬虫DOTA排行榜爬取实例(分享)
Python爬虫DOTA排行榜爬取实例(分享) 1.分析网站 打开开发者工具,我们观察到排行榜的数据并没有在doc里 doc文档 在Javascript里我么可以看到下面代码: ajax的post方法 ...
- python科技限制_Python爬虫怎么突破限制?经常遇到这四种限制突破方法
Python爬虫常常用于搜索引擎,也可以进行数据的采集,现在很多企业都需要通过爬虫进行数据的采集,来分析市场的变化,同行的情况,还可以进行价格的对比等等.但是你的同行并不想让你获得这些信息,会在网站上 ...
- 51自学网python爬虫_Python爬虫基本流程
爬虫定义 爬虫是请求网站并提取自己所需要数据的过程.通过我们的程序,可以代替我们向服务器发送请求,然后进行批量的数据下载. 爬虫基本流程 发起请求 通过url向服务器发送requests请求,请求可以 ...
- python xpath循环_Python爬虫 爬取北京二手房数据
点击蓝字"python教程"关注我们哟! 前言 Python现在非常火,语法简单而且功能强大,很多同学都想学Python!所以小的给各位看官们准备了高价值Python学习视频教程及 ...
- python xpath入门_python爬虫入门实战(三)!xpath 和 csv!
最近有小伙伴说正则表达式学不懂?那有什么替代方案呢?一起往下看吧! 在前两篇文章我们已经学了一些基本技巧.但是之前都是用正则表达式来解析内容的,可能有小伙伴对正则表达式不理解,于是乎,我找到一个相对好 ...
- hadoop 爬虫_python爬虫知识点梳理:带你全面入门python爬虫
今天主要跟大家谈谈爬虫,尤其是刚入门的伙伴,少走弯路!文末附全套的视频版Python学习教程,含爬虫教程!希望大家能够把文字部分看完!做一个梳理! 在学习爬虫之前我们需要明白的一个问题: 爬虫能做什么 ...
最新文章
- thinphp 整合ueditor
- CC++面试题大汇总
- linux 磁盘检测卡主_Linux启动过程
- 【数据结构】用栈解决表达式求值问题
- Java 函数式接口以及Lambda举例
- Ubuntu -- 安装、卸载程序的命令
- gRPC基础--Protobuf编码格式详解
- ScalaTour 2.函数
- 傅里叶光学-函数简介
- 用把百分数转换成a,b,c,d,e等级
- sqlite 多条件查询
- 虚拟机linux装无线网卡驱动,linux无线网卡驱动安装
- 卸载企业版360 含密码
- win7 无法访问服务器共享文件夹,win7系统共享文件夹无法访问的解决方法
- GNSS测量与数据处理(2)
- SOAP Web服务
- 第三章-OpenCV基础-4-掩模
- 解析json格式请求返回500状态码的异常
- 数学黑洞(一)令人拍案叫绝的卡布列克常数
- mysql数据库之备份和恢复
热门文章
- mysql count if语句_COUNT分组条件去重的sql统计语句示例(mysql)
- linux rar解压_linux命令
- Kotlin 越来越牛逼了!学Java都我想转了!
- 并发基础(九) java线程的终止与中断
- JDBC连接mysql--学习目录
- {网络编程}和{多线程}应用:基于UDP协议【实现多发送方发送数据到同一个接收者】--练习
- json数据格式 python_python中json是什么文件格式
- swift 项目_如何对iOS项目进行静态分析
- Java 里的HashMap(HashTable) 简介.
- 关于mount --bind的理解。