python 安装xpath_Python网络爬虫(四)- XPath1.XPath2.XPath在python中的应用
目录:
1.XPath
XPath即为XML路径语言(XML Path Language),它是一种用来确定XML文档中某部分位置的语言。它使用路径表达式来选取 XML 文档中的节点或节点集。节点是通过沿着路径 (path) 或者步 (steps) 来选取的。
XPath语法
2.XPath在python中的应用xpath在Python中有一个第三方库,支持~ lxml
注意:不要直接使用pip install lxml去安装~直接安装很容易安装一个空壳!
安装pip,主要参考博客: 在shell中输入import pip; print(pip.pep425tags.get_supported())可以获取到pip支持的文件名还有版本xpath的安装
通过wheel方式安装
下载对应的wheel文件【和Python版本对应的】
安装wheel插件 :python2 -m pip install wheel
根据下载的本地文件安装lxml:切换到whl文件所在的路径,进行安装
python2 -m pip install lxml-3.8.0-cp27-none-win32.whlwheel名一定要跟pip支持的文件名和版本符合
xpath的使用
获取文本内容用 text()
获取注释用 comment()
获取其它任何属性用@xx,如 @href
@src
@value
3.XPath中的text()和string()区别
1.XPath中的text()和string()本质区别text()是一个node test,而string()是一个函数,data()是一个函数且可以保留数据类型。此外,还有点号(.)表示当前节点。
2.XML例子:
_知几
用例举例text()book/author/text()
string()book/author/string()
data()book/author/data()
.book/author/.
3.特殊用例
XML例子:
pythondjango爬虫
20
0.8
text() 经常在XPath表达式的最后看到text(),它仅仅返回所指元素的文本内容。let $x := book/author/text() return $x
返回的结果是python 爬虫,其中的django不属于author直接的节点内容。string() string()函数会得到所指元素的所有节点文本内容,这些文本讲会被拼接成一个字符串。let $x := book/author/string() return $x
返回的内容是python django 爬虫。data()
大多数时候,data()函数和string()函数通用,而且不建议经常使用data()函数,有数据表明,该函数会影响XPath的性能。let $x := book/pricing/string() return $x
返回的是200.8
let $x := book/pricing/data() return $x
这样将返回分开的20和0.8,他们的类型并不是字符串而是>xs:anyAtomicType,于是就可以使用数学函数做一定操作。
let $x := book/pricing/price/data() let $y := book/pricing/discount/data() return $x*$y
比如上面这个例子,就只能使用data(),不能使用text()或string(),因为XPath不支持字符串做数学运算。
text()不是函数,XML结构的细微变化,可能会使得结果与预期不符,应该尽量少用,data()作为特殊用途的函数,可能会出现性能问题,如无特殊需要尽量不用,string()函数可以满足大部分的需求。
4.爬取诛仙前50章内容
主要分三个步骤:
(1)分析小说网址构成;
(2)获取网页,并分离出小说章节名和章节内容;
(3)写入txt文档。
代码操作:# -*- coding:utf-8 -*-
import urllib,urllib2,re
from lxml import etree
#定义函数,爬取对应的数据
def getText(url,file_name):
print('开始爬取第%s章的内容'%file_name)
#伪装请求头
my_headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.104 Safari/537.36',
}
request = urllib2.Request(url,headers=my_headers)
content = urllib2.urlopen(request).read()
return content
#定义函数,保存爬取到的数据
def save(content):
xml = etree.HTML(content)
datas = xml.xpath('/html/body/div[@id="main"]/h1 | /html/body/div[@id="main"]/p')
data = datas[2].xpath('string(.)').encode('utf-8')
name = datas[0].xpath('string(.)')
print name
print('第%s章的内容爬取完成' % file_name)
with open('txt/%s'%name+'.txt', 'wb') as f:
f.write(data)
#定义主程序接口
if __name__ == '__main__':
x=41277
while x
url = 'http://www.ty2016.net/net/zhuxian/'+str(x)+'.html'
x+=1
file_name = str(x-41278)
try:
content = getText(url,file_name)
save(content)
except Exception,a:
print a
从本地可以看到已经爬取到相关内容
注解:Xpath的获取
python 安装xpath_Python网络爬虫(四)- XPath1.XPath2.XPath在python中的应用相关推荐
- python六小时网络爬虫入门_一小时入门 Python 3 网络爬虫
原标题:一小时入门 Python 3 网络爬虫 作者:Jack-Cui,热爱技术分享,活跃于 CSDN 和知乎,开设的<Python3网络爬虫入门>.<Python3机器学习> ...
- 《python》002 网络爬虫 -0A 基础
python3.6 安装 Scrapy ① 安装② Anaconda安装scraoy Request使用大全 简单了解 爬取网站 趣头条爬取 网络爬虫实例 小甲鱼零基础python 视频 小甲鱼视频 ...
- python网络爬虫的基本步骤-详解Python网络爬虫功能的基本写法
网络爬虫,即Web Spider,是一个很形象的名字.把互联网比喻成一个蜘蛛网,那么Spider就是在网上爬来爬去的蜘蛛. 1. 网络爬虫的定义 网络蜘蛛是通过网页的链接地址来寻找网页的.从网站某一个 ...
- 用python写网络爬虫 第2版 pd_用Python写网络爬虫(第2版)
用Python写网络爬虫(第2版)电子书 畅销的Python网络爬虫发实战图书全新升级版,上一版年销量近40000册. 针对Python 3.6版本编写. 提供示例完整源码和实例网站搭建源码,确保用户 ...
- 基于python的影评数据分析_基于Python聚焦型网络爬虫的影评获取技术
龙源期刊网 http://www.qikan.com.cn 基于 Python 聚焦型网络爬虫的影评获取技 术 作者:郭向向 郑嘉慧 苗学芹 来源:<时代金融> 2019 年第 11 期 ...
- 基于Python实现的网络爬虫项目——多线程下载小说并保存为txt文件(包含完整代码及注释)
基于Python实现的网络爬虫项目--多线程下载小说并保存为txt文件(包含完整代码及注释) 一.确立预期目标 二.完成项目所需工具 三.项目需要解决的问题 问题一 问题二 问题三 问题四 问题五 问 ...
- python爬虫简单实例-Python 利用Python编写简单网络爬虫实例3
利用Python编写简单网络爬虫实例3 by:授客 QQ:1033553122 实验环境 python版本:3.3.5(2.7下报错 实验目的 获取目标网站"http://bbs.51tes ...
- python从零基础到项目实战怎么样-Python 3.x网络爬虫从零基础到项目实战
● 案例完整 本书中的所有案例都是通过"理论讲解 + 环境搭建 + 完整代码及分析 + 运行结果"这种完善的结构进行讲解的.此外,复杂的案例配有项目结构图,有难度的案例还分析了底层 ...
- python为什么叫爬虫-python为什么叫网络爬虫
爬虫可以抓取网站或应用程序的内容并提取有用的价值,它还可以模拟用户在浏览器或应用程序上的操作,以实现自动化程序.今天小编主要给大家分享python为什么叫网络爬虫,希望对你们有帮助! 一.你知道什么是 ...
最新文章
- signature=680da11b802226668317d65ae7c38eb7,encryption with designated verifiers
- DevExpress v18.1新版亮点——WinForms篇(七)
- 自学Python十二 战斗吧Scrapy!
- C++中对象的构造顺序和析构顺序
- 通过Dapr实现一个简单的基于.net的微服务电商系统(十六)——dapr+sentinel中间件实现服务保护...
- gdb调试的基本使用
- 【第九课】MriaDB密码重置和慢查询日志
- 《微信小程序开发》学习情况大调查!
- es6 Class 的 new.target 属性
- Python自然语言处理相,新词发现,主题模型,隐马尔模型词性标注,Word2Vec,情感分析...
- mc服务器天赋系统,[娱乐|经济]GokiStats——全新的天赋系统插件MySQL可用[全版本]...
- Linux内核原子操作及函数
- 广发基金总经理林传辉:深耕资产管理本源做投资者的资产配置专家
- java中符号常量_Java中符号常量
- chmod 777 授权无效
- 微信小程序开发完工+问题汇总
- scrapy爬取微信公众号内容,多管道储存,orm数据储存
- Threaded Binary Tree
- Process terminated以及出现Dependency not found的情况
- latex tips latex 大括号 \left\{ \right\}