『python爬虫』11. xpath解析实战之获取csdn文章信息(保姆级图文)


欢迎关注 『python爬虫』 专栏,持续更新中
欢迎关注 『python爬虫』 专栏,持续更新中

在这里插入图片描述
在这里插入图片描述

网页结构分析

我的csdn主页
https://blog.csdn.net/u011027547

我们先找一篇文章内容的div,具体操作为逐渐向更大范围的div查找,直到找到包含所有文章的结构体。
在这里插入图片描述
再往上一级就遇到了所有文章的列表结构了,所以我们可以确定上面的内容已经是每篇文章的div单位了
在这里插入图片描述
而且在这一级的div下有很多相同结构的div列表,也佐证了我们的结构判断。


爬取思路

xpath 与 full xpath路径在部分网页会出现full xpath无法返回内容的情况,所以为了兼容性建议使用xpath,用full xpath会返回一个空列表。

得到所有的文章

  • 第1个文章的div
    //*[@id=“userSkin”]/div[2]/div/div[2]/div[1]/div[2]/div/div/div[1]
  • 第2个文章的div
    //*[@id=“userSkin”]/div[2]/div/div[2]/div[1]/div[2]/div/div/div[2]
  • 第3个文章的div
    //*[@id=“userSkin”]/div[2]/div/div[2]/div[1]/div[2]/div/div/div[3]
  • 所以拿到每一个文章div
    //*[@id=“userSkin”]/div[2]/div/div[2]/div[1]/div[2]/div/div/div

遍历每个文章得到其中的信息

  • 文章与title的相对比较
    //[@id=“userSkin”]/div[2]/div/div[2]/div[1]/div[2]/div/div/div[1] ./article/a/div[2]/div[2]/div/div[3]/span
    //
    [@id=“userSkin”]/div[2]/div/div[2]/div[1]/div[2]/div/div/div[1] /article/a/div[2]/div[2]/div/div[3]/span
    所以只需要相对路径./article/a/div[2]/div[2]/div/div[3]/span即可

实现代码

只做了当前展示页面的爬取


import requests
from lxml import etree

url = "https://blog.csdn.net/u011027547"
headers = {'User-Agent': 'User-Agent:Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0;'}
resp = requests.get(url,headers=headers)
print(resp)
# print(resp.text)

# 解析
html = etree.HTML(resp.text)

# 第1个文章的div
# //*[@id="userSkin"]/div[2]/div/div[2]/div[1]/div[2]/div/div/div[1]
# 第2个文章的div
# //*[@id="userSkin"]/div[2]/div/div[2]/div[1]/div[2]/div/div/div[2]
# 第3个文章的div
# //*[@id="userSkin"]/div[2]/div/div[2]/div[1]/div[2]/div/div/div[3]
# 所以拿到每一个文章div
# //*[@id="userSkin"]/div[2]/div/div[2]/div[1]/div[2]/div/div/div

# 文章与title的相对比较
# //*[@id="userSkin"]/div[2]/div/div[2]/div[1]/div[2]/div/div/div[1] ./article/a/div[2]/div[2]/div/div[3]/span
# //*[@id="userSkin"]/div[2]/div/div[2]/div[1]/div[2]/div/div/div[1]  /article/a/div[2]/div[2]/div/div[3]/span

divs = html.xpath('//*[@id="userSkin"]/div[2]/div/div[2]/div[1]/div[2]/div/div/div')# 拿到每一个文章的div
# print(divs)
for div in divs:  # 每一个文章信息
    # //*[@id="userSkin"]/div[2]/div/div[2]/div[1]/div[2]/div/div/div[1]/article/a/div[2]/div[1]/div[1]/h4
    title = div.xpath("./article/a/div[2]/div[1]/div[1]/h4/text()")[0]
    print("文章标题:"+title)
    # //*[@id="userSkin"]/div[2]/div/div[2]/div[1]/div[2]/div/div/div[1]/article/a/div[2]/div[2]/div/div[3]/span
    read_number = div.xpath("./article/a/div[2]/div[2]/div/div[3]/span/text()")[0]
    print("阅读量:"+read_number)
    # //*[@id="userSkin"]/div[2]/div/div[2]/div[1]/div[2]/div/div/div[1]/article/a/div[2]/div[2]/div/div[4]/span
    zan = div.xpath("./article/a/div[2]/div[2]/div/div[4]/span/text()")[0]
    print("点赞数:"+zan)



总结

大家喜欢的话,给个👍,点个关注!给大家分享更多计算机专业学生的求学之路!

版权声明:

发现你走远了@mzh原创作品,转载必须标注原文链接

Copyright 2023 mzh

Crated:2023-3-1

欢迎关注 『python爬虫』 专栏,持续更新中
欢迎关注 『python爬虫』 专栏,持续更新中
『未完待续』


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
当使用Python进行爬虫时,XPath是一种非常有用的工具,可以帮助您从HTML或XML文档中提取所需的数据。以下是一个简单的示例,演示如何使用PythonXPath进行爬虫实战: 首先,您需要安装必要的库。在Python中,您可以使用`lxml`库来解析HTML或XML文档,并使用`requests`库发送HTTP请求。您可以使用以下命令来安装它们: ```python pip install lxml pip install requests ``` 接下来,我们将使用`requests`库发送HTTP请求,并使用`lxml`库解析返回的HTML内容。以下是一个示例代码: ```python import requests from lxml import etree # 发送HTTP请求并获取页面内容 url = 'https://example.com' # 替换为您要爬取的网页地址 response = requests.get(url) content = response.content # 使用lxml解析HTML内容 html = etree.HTML(content) # 使用XPath提取所需的数据 data = html.xpath('//div[@class="example-class"]/text()') # 替换为您要提取数据的XPath表达式 # 打印提取的数据 for d in data: print(d) ``` 在上述示例中,我们首先发送HTTP请求并获取网页的内容。然后,我们使用`etree.HTML()`函数将内容转换为可解析的HTML对象。接下来,我们使用XPath表达式`'//div[@class="example-class"]/text()'`来提取具有`class`属性为`example-class`的`div`元素的文本内容。您可以根据实际情况调整XPath表达式以匹配您要提取的数据。 注意:在实际使用中,您可能还需要处理页面的反爬机制、处理异常情况和使用循环遍历多个页面等。此示例仅为演示基本的Python爬虫XPath使用方法。 希望这可以帮助到您!如有任何问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

发现你走远了

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值