当前位置:   article > 正文

Python爬虫:xpath,cookie都正确仍然无法爬取需要的内容解决方法之一_xpath写的都对 为什么抓不到内容

xpath写的都对 为什么抓不到内容

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

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

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

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

  1. import requests
  2. from lxml import etree
  3. 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',
  4. "Cookie":'JSESSIONID=53E38B6D14BD50D9BF509CC2AC0DB7CE'
  5. }
  6. url = "http://ae.cqu.edu.cn/szdw.htm" #url网址
  7. res = requests.get(url,headers=headers)
  8. text = res.content.decode('UTF-8')
  9. # print(text)
  10. tree = etree.HTML(text)
  11. # print(tree)
  12. li_tree = tree.xpath('/html/body/section/div/section[2]/div/div[1]/table[1]//tr/td/div/table//tr/td/span/a')
  13. print(li_tree)

运行结果:

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

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

上面这个网页就是如此

 

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

  1. import requests
  2. from lxml import etree
  3. 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',
  4. "Cookie":'JSESSIONID=53E38B6D14BD50D9BF509CC2AC0DB7CE'
  5. }
  6. url = "http://ae.cqu.edu.cn/szdw.htm" #url网址
  7. res = requests.get(url,headers=headers)
  8. text = res.content.decode('UTF-8')
  9. # print(text)
  10. tree = etree.HTML(text)
  11. # print(tree)
  12. li_tree = tree.xpath('/html/body/section/div/section[2]/div/div[1]/div/a')
  13. print(li_tree)

运行结果:

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

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

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/226476?site
推荐阅读
相关标签
  

闽ICP备14008679号