Python爬虫:xpath,cookie都正确仍然无法爬取需要的内容解决方法之一

本文章作为中级文章就不介绍python爬虫需要用到的库以及hearders的设置了,哈哈并非博主傲娇,想给猿猿们节省浏览文章的时间!

可以看下面的代码,本文章用重庆大学官网的某个页面网址举例。下面代码的功能是通过标签的xpath路径爬取该页面内容的url。网页的url是:http://ae.cqu.edu.cn/szdw.htm(学校教师展示),大家可以在浏览器打开该页面,我就不把页面内容在文章中展示了。

打开页面后,调出开发者页面(F12),可以看见页面的html代码,把指针点击页面内容中可以跳转的文本链接(这里是教师的姓名),这样就可以出现该链接,a标签.点击右键复制a标签里链接的完整xpath.全部内容如下:

(复制粘贴xpath中含有tbody标签,需要删掉tbody标签,下面代码中//中就是因为把中间tbody删掉了) 

import requests
from lxml import etree
headers = {"User-Agent":'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36',
           "Cookie":'JSESSIONID=53E38B6D14BD50D9BF509CC2AC0DB7CE'
           }

url = "http://ae.cqu.edu.cn/szdw.htm"            #url网址
res = requests.get(url,headers=headers)
text = res.content.decode('UTF-8')
# print(text)
tree = etree.HTML(text)
# print(tree)
li_tree = tree.xpath('/html/body/section/div/section[2]/div/div[1]/table[1]//tr/td/div/table//tr/td/span/a')
print(li_tree)

运行结果:

运行代码可以发现,最终print出的li_tree为空列表;一般静态网站,找对标签xpath,headers设置好User-Agent就可以爬取内容;一般动态网站加个实时访问刷新的Cookie即可;最后设置好休眠时间time.sleep(),就可以爬取一般网页内容了。注意,这里说了一般,有些网站的反爬措施很高级,甚至会封掉你的ip。

为什么最后爬取的标签内容为空列表呢?经过很多次尝试以及仔细观察所爬取的html代码内容,我发现有一个标签里含有的css代码:style = display:none ,这行代码可以把这个标签里面的内容隐藏。展开这个标签里面的内容,很可能就是我们所需要的真实的页面a标签里面的url地址。这个标签的内容无法用指针在页面中找出,因为在页面展示中隐藏了。

上面这个网页就是如此

 

再重新复制xpath并粘贴即可,得到如下:

import requests
from lxml import etree
headers = {"User-Agent":'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36',
           "Cookie":'JSESSIONID=53E38B6D14BD50D9BF509CC2AC0DB7CE'
           }

url = "http://ae.cqu.edu.cn/szdw.htm"            #url网址
res = requests.get(url,headers=headers)
text = res.content.decode('UTF-8')
# print(text)
tree = etree.HTML(text)
# print(tree)
li_tree = tree.xpath('/html/body/section/div/section[2]/div/div[1]/div/a')
print(li_tree)

运行结果:

 这样我们就得到了正确的li_tree。

看这篇文章的猿猿们肯定有了一定的python-xpath爬虫基础了,后面对li_tree的处理以及延伸获取所需要的页面内容我在这就不介绍啦!

(第一次创作,如有错误或者写的不妥的地方还请大佬批评指正!!!respect!)

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值