python爬虫初步之Xpath实战

**

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()
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值