网站粘性,搭建一个视频网站多少钱,wordpress出于安全考虑,手机网站案列目录#xff1a;
1.XPath
XPath即为XML路径语言#xff08;XML Path Language#xff09;#xff0c;它是一种用来确定XML文档中某部分位置的语言。它使用路径表达式来选取 XML 文档中的节点或节点集。节点是通过沿着路径 (path) 或者步 (steps) 来选取的。
XPath语法
2.XP…目录
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.8text() 经常在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,headersmy_headers)
content urllib2.urlopen(request).read()
return content
#定义函数保存爬取到的数据
def save(content):
xml etree.HTML(content)
datas xml.xpath(/html/body/div[idmain]/h1 | /html/body/div[idmain]/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__:
x41277
while x
url http://www.ty2016.net/net/zhuxian/str(x).html
x1
file_name str(x-41278)
try:
content getText(url,file_name)
save(content)
except Exception,a:
print a
从本地可以看到已经爬取到相关内容
注解Xpath的获取