本文章作为中级文章就不介绍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)

运行结果:

python爬虫无法选中值 python爬虫爬取不出信息_爬虫

运行代码可以发现,最终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)

运行结果:

python爬虫无法选中值 python爬虫爬取不出信息_开发语言_02

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

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

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