您的位置:首页 > 编程语言 > Python开发

python爬虫初步之Xpath实战

2019-03-04 21:11 232 查看

**

python爬虫初步之Xpath实战

**

使用Xpath提取丁香园论坛的回复内容

XPath 使用路径表达式来选取 XML 文档中的节点或节点集。节点是通过沿着路径 (path) 或者步 (steps) 来选取的。
关于Xpath的学习可参考网址:http://www.w3school.com.cn/xpath/xpath_syntax.asp
一、用户浏览器访问目标网站并检查目标内容所在标签
目标网址是:

http://www.dxy.cn/bbs/thread/626626

我用Chrome访问的,按F12可看见网站结构及回复内容所在标签如下图:

二、获取回复内容
目标内容在td class="postbody"标签下,利用Xpath获取内容,我们使用Chrome的Xpath Helper插件,可以很方便的写出匹配的Xpath,如下图所示:

可看到匹配的内容已经在右边显示出来了,同样,获取用户名也用这个方法。主要是要掌握Xpath的用法,在开发者模式下右击也可以复制标签的Xpath,不过不建议这样做,因为有的会出错,而且没有技术含量。

三、源码

import urllib.request
from lxml import etree
def main():
data = []
s1 = '//div[@class="auth"]/a/text()'
s2 = '//div/table/tbody/tr/td[@class="postbody"]/text()'
url = 'http://www.dxy.cn/bbs/thread/626626'
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) "
"Chrome/58.0.3029.110 Safari/537.36 SE 2.X MetaSr 1.0"
}
request = urllib.request.Request(url, headers=headers)
html = urllib.request.urlopen(request).read().decode("utf-8")
# 解析HTML文件为HTML DOM模型
content = etree.HTML(html)
userNames = content.xpath(s1)
cons = content.xpath(s2)
for user, con in userNames, cons:
data.append((userNames, con))
print(data)

if __name__ == '__main__':
main()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: