爬虫图片href是html图片,xpath爬虫实例,爬取图片网站百度盘地址和提取码

某套图网站,套图以封面形式展现在页面,需要依次点击套图,点击广告盘链接,最后到达百度网盘展示页面。

这一过程通过爬虫来实现,收集百度网盘地址和提取码,采用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.html"

response = requests.get(url= url)

wb_data = response.text # 将页面转换成文档树

html = etree.HTML(wb_data)

b = html.xpath('//div[@class = "pictext"]//@href')

c=b[1] #需要注意的地方,class = "pictext"下有两个href,我们只需要第一个href的值,所以返回值再赋值给c且取第二项数据

print(c)

执行结果:成功返回所有内页

3、获取到广告盘地址,接下来要打开该地址,抓百度盘真实地址。链接和提取码在两个不同的元素中,所有最后返回两组数据。

代码如下:

url = "http://17d.la/xam9I6"

response = requests.get(url= url)

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)

注意,这里html.xpath写法与上面有些区别,目标元素的上级没有class,只能模糊取值

比如提取码的HTML结构如下图,结构为//tr/td/,单/代表父节点下的子节点,双/代表父节点后的子孙节点。提取码为tr的子节点。但是这个结构下有很多组数据,最后输出一个数组b(看上面代码b)。如此,我们找到提取码位于数组序列,赋值给c(看上面代码c),这样获得了真实的百度盘地址

网盘地址则因为有href属性,所以好爬去一些,注意/的数量即可

4、把以上步骤拼成一个脚本,这里就涉及到函数和函数之间的传参,还有循环的问题。代码直接贴出来

# -*-coding:utf8-*-

import requests

from lxml import etree

firstlink = "https://www.xxx.com/gc/qt/83720.html"

#第一步,获取第一页面所有的地址

def stepa ():

url = "https://www.xxx.com/gc/"

response = requests.get(url=url)

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:

continue

response = requests.get(url=url)

wb_data = response.text

# 将页面转换成文档树

html = etree.HTML(wb_data)

b = html.xpath('//div[@class = "pictext"]//@href')

c = b[1]

#获取到广告页地址

url2 = c

response = requests.get(url=url2)

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/382926.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HTML如何做个播放器图表,Web绘图神器之ECharts-ts文件播放器

前言最近在做一个项目需要用到大量的图形报表来展示数据。就去对比了一些前端图形报表框架,有Highcharts、Echarts、Three.js。发现Three.js比较笨重,不太适合数据展示,做前端动画还是比较好。而highcharts、echarts比较轻量级拿来就用比较方…

微型计算机主存可以分为,计算机基础试题 (含答案)

计算机基础试题 (含答案)一、填空题(每空1分,共30分)1、计算计的软件系统通常分成______软件和______软件。2、字长是计算机______次能处理的______进制位数。3、1KB______B;1MB______KB。4、计算机中,中央处理器CPU由______和______两部分组成。5、CPU按…

90年代微型计算机,版本控制如何在80年代和90年代的当今微型计算机上工作?

您必须在当时的通用基础结构中看到这一点。在80年代初期,IBM发布了“个人计算机”,您可以从字面上理解它。开发PC应用程序的最常见方法是一个人创建某些东西并试图出售它。因此,每个发行版本一张软盘可能很常见。您可以购买一些漂亮的彩色标签…

全国英语计算机9月统考2019,2019年9月网络教育统考《计算机应用基础》模拟题6...

本文为大家提供2019年9月网络教育统考《计算机应用基础》模拟题6,有需要的考生请自取。网络教育本科全国统考《计算机应用基础》模拟题6一、单选题1、第一台电子数字计算机诞生于 ______。A : 麻省理工学院B : 哈佛大学C : 宾夕法…

计算机网络原码反码补码,计算机的原码和反码及补码到底是什么

数据在计算机里面都是以0和1存储和运算的,这是冯诺依曼体系的基础。比如一个数在计算机中若有正负之分,则用一个数的最高位(符号位)用来表示它的正负,其中0表示正数,1表示负数。原码就是整数绝对值的二进制形式,为了解…

计算机组装活动口号,广教育、多技能、求发展喜迎计算机系第五届电脑文化节...

在深入学习实践科学发展观,改革教育教学模式,迎接高职院校人才培养评估工作的今天,为贯彻以人为本理念,全方位服务学生,培养学生综合技能,本学期计算机系举办第五届电脑文化节,举办电脑文化节是…

关于计算机应用基础问题,《计算机应用基础》习题及问题详解

《计算机应用基础》习题及问题详解 (17页)本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦!19.90 积分实用文档第一章 计算机基础知识填空题:1. 信息技术在现代工业工程中的应用十分广泛&…

html 微博下拉菜单,jQuery实现模仿微博下拉滚动条加载数据效果

本文实例讲述了jQuery实现模仿微博下拉滚动条加载数据效果。分享给大家供大家参考,具体如下:滚动条距离底部$(function () {var i 4;$(window).bind("scroll", function (event) {//滚动条到网页头部的 高度,兼容ie,ff,chromevar …

怎么用计算机计算方位角,坐标方位角连续计算 fx-5800计算器编程

摘要:利用fx-5800计算器可编程的特点,编写坐标方位角连续计算程序,使计算方位角的工作变得简单易行,并且工作量大幅度降低。关键词:方位角;左侧转角;导线Abstract: using fx-5800 calculator pr…

yii html 添加下拉框,php – Yii2下拉列表:在我的选项中添加像data-food =“…”这样的html标记...

我正在使用Yii2构建应用程序.我使用Yii2提供的Html Helper生成下拉列表: Html::dropDownList(food, $food_id, $foodList, [id>food-select]); ?>其中$food_id是默认选择的选项,$foodList是一个包含表示选项值和文本的键值对的数组.它工作得很好,但我需要在我…

html是网页技术,Html静态网页技术小结

《Html静态网页技术小结》由会员分享,可在线阅读,更多相关《Html静态网页技术小结(4页珍藏版)》请在人人文库网上搜索。1、Html静态网页技术小结l Html入门n 所有的html网页都是有标签(W3C规定标准标签)n 所有的标签使用标准: ,而…

超级计算机 极光,万亿次极光系列代数运算微处理器来袭,国产超算已经一骑绝尘?-控制器/处理器-与非网...

在一日千里、风起云涌的信息时代,谁掌握了核心芯片技术,谁就占据了引领信息产业发展潮流的制高点。长期以来中国一直饱受缺芯之痛,每年都要花费超过 2000 亿美元的资金用于从西方国家购买芯片,规模甚至超过了石油、铁矿石等大宗资…

计算机组成数据通路组成实验报告,计算机组成原理实验报告+++数据通路实验.doc...

计算机组成原理实验报告数据通路实验数据通路组成实验一、实验目的(1)将双端口通用寄存器组和双端口存储器模块联机;(2)进一步熟悉计算机的数据通路;(3)掌握数字逻辑电路中故障的一般规律,以及排除故障的一…

计算机网络安全本科大学排名,2021网络工程专业大学排名 最好大学排行榜

2021网络工程专业大学排名 最好大学排行榜2021-06-11 19:35:09文/丁雪竹网络工程专业在全国最好的大学是哪几所呢,最好的大学排名是什么样呢,小编整理网络工程专业大学最好大学排行榜,仅供参考!网络工程专业最好大学排行榜在网络工…

20线程测试cpu性能软件,评测平台介绍、CPU多线程性能测试

2、平台介绍及CPU性能测试AMD AM3平台CPUAMD FX-8150(4模块/8核)AMD FX-8350(4模块/8核)主板华硕 Crosshair V Formula(BIOS版本:1605)Intel LGA1155平台CPUIntel Core i5 3570K(4核/4线程)Intel Core i7 3770K(4核/8线程)主板华硕 P8Z77-V Deluxe共用配件硬盘主盘&…

大型网站服务器 pdf,大型网站服务器容量规划[PDF][145.25MB]

内容简介内 容 提 要本书讲解了用数学回归分析方法来做服务器容量规划的思路,让读者掌握服务器容量规划的量化方法;模型的选择是服务器容量规划的关键,不同的程序有不同的模型。本书使用nginxPHPMySQL为实例演示了具体的规划过程,…

穿越火线全部服务器都显示爆满,穿越火线大区全部爆满,频道挤不进去背后的故事!...

大家好我是小包子,穿越火线经历了十一周年,盛典游戏更新后,我们发现游戏基本上所有大区都呈现爆满的盛世。我们热爱的穿越火线又回来了吗?6月小包子曾爆料CF启动量超过吃鸡跃居第二,射击游戏第一,重回巅峰的…

dod刷服务器文件,DoD 5220.22-M和Gutmann两种硬盘擦除算法

DoD 5220.22-M的说明Use this seven-pass method for tighter security. Different patterns ofbytes are written to the disk as described in the table below. Usingthis method is probably even safer than using the simple method (with 6passes).This method is descr…

服务器加根网线用不用修改路由器,安装设置无线路由器需要用几根网线?

“安装设置无线路由器需要用几根网线?看到网上安装设置路由器的教程,有的说需要两根网线,有的说需要一根网线,请问到底应该使用一根还是两根呢?”其实这个问题的答案并不是唯一的,使用一根还是两根&#xf…

大数运算#

大数,就是C/C中利用基本类型所不能存储的数字,少则数十位,大则几万位,如何存储和计算大数就是本文的内容。 在C和C中,没有存储大数的数据结构,就算 unsigned long long也只能表示19位的数字  如果我们用d…