哈尔滨网站建设网络优化,微信公众号怎么开店,wordpress 时间格式,公司网站功能某套图网站#xff0c;套图以封面形式展现在页面#xff0c;需要依次点击套图#xff0c;点击广告盘链接#xff0c;最后到达百度网盘展示页面。这一过程通过爬虫来实现#xff0c;收集百度网盘地址和提取码#xff0c;采用xpath爬虫技术1、首先分析图片列表页#xff0…某套图网站套图以封面形式展现在页面需要依次点击套图点击广告盘链接最后到达百度网盘展示页面。这一过程通过爬虫来实现收集百度网盘地址和提取码采用xpath爬虫技术1、首先分析图片列表页该页按照更新先后顺序暂时套图封面查看HTML结构。每一组“li”对应一组套图。属性href后面即为套图的内页地址(即广告盘链接页)。所以我们先得获取列表页内所有的内页地址(即广告盘链接页)代码如下import requests 倒入requests库from lxml import etree 倒入lxml 库(没有这个库pip install lxml安装)url https://www.xxxx.com/gc/ 请求地址response requests.get(url url) 返回结果wb_data response.text 文本展示返回结果html etree.HTML(wb_data) 将页面转换成文档树b html.xpath(//ul[class clearfix]//href) 这一步的意思是class“clearfix”下所有属性为“href”赋值给“b”因为我们的目标内容都展示在class“clearfix”下且在href属性后面print(b) 打印b这里的b是一个数组print(b[0]) 打印b的第一项数据执行结果成功返回所有内页2、打开内页(即广告盘链接页)获取广告盘地址。下图红色箭头还不是真正的百度盘页需要点击后才可以看的到百度盘的地址。所以这一步骤只需要抓取红色箭头内容地址代码如下url https://www.192ta.com/gc/toutiao/87098.htmlresponse requests.get(url url)wb_data response.text # 将页面转换成文档树html etree.HTML(wb_data)b html.xpath(//div[class pictext]//href)cb[1] #需要注意的地方class pictext下有两个href我们只需要第一个href的值所以返回值再赋值给c且取第二项数据print(c)执行结果成功返回所有内页3、获取到广告盘地址接下来要打开该地址抓百度盘真实地址。链接和提取码在两个不同的元素中所有最后返回两组数据。代码如下url http://17d.la/xam9I6response requests.get(url url)wb_data response.text# 将页面转换成文档树html etree.HTML(wb_data)b html.xpath(//tr/td/text())cb[6]#提取码d html.xpath(//tr//href)#百度地址print(c)print(d)注意这里html.xpath写法与上面有些区别目标元素的上级没有class只能模糊取值比如提取码的HTML结构如下图结构为//tr/td/单/代表父节点下的子节点双/代表父节点后的子孙节点。提取码为tr的子节点。但是这个结构下有很多组数据最后输出一个数组b(看上面代码b)。如此我们找到提取码位于数组序列赋值给c(看上面代码c)这样获得了真实的百度盘地址网盘地址则因为有href属性所以好爬去一些注意/的数量即可4、把以上步骤拼成一个脚本这里就涉及到函数和函数之间的传参还有循环的问题。代码直接贴出来# -*-coding:utf8-*-import requestsfrom lxml import etreefirstlink https://www.xxx.com/gc/qt/83720.html#第一步获取第一页面所有的地址def stepa ():url https://www.xxx.com/gc/response requests.get(urlurl)wb_data response.text# 将页面转换成文档树html etree.HTML(wb_data)a html.xpath(//ul[class clearfix]//href)return(a)alllink stepa()#第二步获取的地址循环读取打开从而获取百度网盘信息def stepb(alllink,firstlink):for url in alllink:if url firstlink:continueresponse requests.get(urlurl)wb_data response.text# 将页面转换成文档树html etree.HTML(wb_data)b html.xpath(//div[class pictext]//href)c b[1]#获取到广告页地址url2 cresponse requests.get(urlurl2)wb_data response.text# 将页面转换成文档树html etree.HTML(wb_data)b html.xpath(//tr/td/text())c b[6]d html.xpath(//tr//href)print(c)print(d)#获取百度地址和提取码stepb(alllink,firstlink)需要注意的地方1、return的用法如果想把函数生成的值传给后面的函数用就需要返回这个值如def stepa 里定义的a为爬去的套图封面地址(通过打开这个地址进行下一步)就需要return(a)返回a的值否则执行后无数据2、Continue的应用因为第一个套图地址打开的内容没有目标内容这样找不到元素会报错所以需要读取套图地址的时候要跳过第一个地址。加一个if判断当第一个地址等于事先定义好的非正常地址的时候跳过这个循环打印结果参考地址https://cuiqingcai.com/5545.html