赞
踩
本文章作为中级文章就不介绍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!)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。