Python 爬虫使用 xpath 获取元素为空

400次阅读
没有评论

共计 918 个字符,预计需要花费 3 分钟才能阅读完成。

最近刚准备小弄一下爬虫,就遇到了反爬虫制裁,获取元素老是为空。

是这样的,之前QQ群总能看见一分钟简讯新闻的图片,觉得挺好的,就准备弄一个今日快看分类,每天更新。然后找到了 365 资讯简报, 准备写一个 python 脚本定时爬取内容并发布到博客。

但是对于爬虫小白来说,却是出师不利,用 xpath 获取不到需要的元素。

首先,我是这样获取的。

import requests
import re
from lxml import etree

headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.87 Safari/537.36"}

res = requests.get("https://www.163.com/dy/media/T1603594732083.html",headers=headers)

selector = etree.HTML(res.text)

target = selector.xpath("/html/body/div/div[2]/div[2]/div[1]/div[3]/ul/li[1]/a/@href")

print(target)

结果是获取不到最新文章的链接的。

Python 爬虫使用 xpath 获取元素为空

因为 /html/body/div/div[2]/div[2]/div[1]/div[3]/ul/li[1]/a/@href 是这样来的。

Python 爬虫使用 xpath 获取元素为空

这是经过浏览器渲染后的元素。

后来将源代码保存为 html 元素后发现,浏览器选然后比原来多了一个 div 元素。<div id="fixed_line_e12ff311d0" style=""></div> 应该是 js 在后期加上去的。

/html/body/div/div[2]/div[2]/div[1]/div[3]/ul/li[1]/a/@href 改为 /html/body/div/div[2]/div[2]/div[1]/div[2]/ul/li[1]/a/@href,问题顺利解决。

Python 爬虫使用 xpath 获取元素为空

这是因为反爬虫的机制,提高了爬虫的门槛,所以还是不能直接复制 xpath 地址,需要把源代码下载下来进行分析。

提醒:本文发布于668天前,文中所关联的信息可能已发生改变,请知悉!

AD:【腾讯云服务器大降价】2核4G 222元/3年 1核2G 38元/年
正文完
 
阿蛮君
版权声明:本站原创文章,由 阿蛮君 2022-09-26发表,共计918字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)
Copyright © 2022-2024 阿蛮君博客 湘ICP备2023001393号
本网站由 亿信互联 提供云计算服务 | 蓝易云CDN 提供安全防护和加速服务
Powered by Wordpress  Theme by Puock