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

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

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

  1. python爬虫实践(1)爬取图片网站的高清壁纸

    python爬虫实践(1)爬取图片网站的高清壁纸 robots.txt协议: 爬取网站之前首先检查该站点根目录下是否存在robots.txt,如果存在,就会按照该文件中的内容来确定访问的范围:如果该文 ...

  2. Scrapy爬取图片网站——最详细的入门爬虫教程,新手入门干货,不进来看一下?

    开始前准备 这次爬虫使用scrapy,所以用到的工具必然是python3.7,scrapy,pycharm这些东西, 目标网站:http://pic.netbian.com 彼岸图网,个人非常喜欢的图 ...

  3. Python爬虫新手入门教学(十五):爬取网站音乐素材

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. Python爬虫.数据分析.网站开发等案例教程视频免费在线观看 https://space. ...

  4. [python学习] 简单爬取图片网站图库中图片

    最近老师让学习Python与维基百科相关的知识,无聊之中用Python简单做了个爬取"游讯网图库"中的图片,因为每次点击下一张感觉非常浪费时间又繁琐.主要分享的是如何爬取HTML的 ...

  5. python爬虫 asyncio aiohttp aiofiles 单线程多任务异步协程爬取图片

    python爬虫 asyncio aiohttp aiofiles 多任务异步协程爬取图片 main.py """=== coding: UTF8 ==="&q ...

  6. 爬虫图片href是html图片,python爬虫取图片详解,

    接下来会依次准备三个案例(如果要把每一个点都精通的话大约要花费一个月,我说的精通是指自己将代码不用查资料写出来,以下暂未整理): import requests,threading#多线程处理与控制 ...

  7. 爬虫(2)-解析库xpath和beautifulsoup爬取猫眼电影排行榜前100部电影

    解析库爬取猫眼电影前100部电影 认为有用的话请点赞,码字不易,谢谢. 其他爬虫实战请查看:https://blog.csdn.net/qq_42754919/category_10354544.ht ...

  8. 爬虫基础之Python简单爬取实例-----爬取网站的PPT模板

    目录 一.网络爬虫是什么? 二.网站分析 1.进行网站分析: 2.分析完毕,开始反推 三.代码分析 1.引入库 2.网页源码 四.运行结果 五.总结 一.网络爬虫是什么? 网络爬虫(又称为网页蜘蛛,网 ...

  9. python爬虫系列:xpath爬取图片讲解(零基础向)

    系列文章目录 python爬虫系列:BeautifulSoup爬取小说讲解(零基础向)(版权问题下架) python爬虫系列:requests下载酷我音乐讲解(零基础向)(版权问题下架) 文章目录 目 ...

最新文章

  1. JQuery 动态创建表单,并自动提交
  2. list控件响应鼠标键的单双击
  3. 下载并配置完dex-net,在CLI中执行相应操作命令报错解决
  4. PHP框架编写和应用知识点,php框架知识点的整理和补充
  5. springmvc工作流程_SpringMVC工作原理
  6. 向量距离计算 java_在机器学习中扮演着极为重要角色的向量
  7. 卷积神经网络-感受野的定义
  8. UVA10152 ShellSort【匹配】
  9. 《构建之法》读书心得
  10. 基于java的物资管理系统
  11. 编程路上,对于迷失者的一些小小建议
  12. java opts tomcat,tomcat JAVA_OPTS配备
  13. 推荐几款好用的手机编程APP!
  14. SDNU_ACM_ICPC_2020_Winter_Practice_4th [Reproduced]
  15. MySQL数据库基础操作
  16. 微信转账一次显示两个_微信转账又出新玩法!同时满足两个条件,收款转账畅通无阻...
  17. 理解linux cpu load
  18. 如何用 Python 和循环神经网络预测严重交通拥堵?
  19. 用python查看音频数据量#用python对音频图片截取保留拼接#根据乐谱生成音乐
  20. ChaosBlade Java 场景性能优化,那些你不知道的事

热门文章

  1. R语言中级--自定义方程
  2. BZOJ - 4520 K远点对
  3. HTML音乐标签和滚动
  4. label 标签里面元素点击事件
  5. POJ 2115 C Looooops(扩展欧几里得)
  6. jQuery触发a标签的点击事件无效
  7. 公有云与私有云的差别(转)
  8. hdu 4747 mex 线段树+思维
  9. 我的处女作《设计模式之禅》——前言
  10. java 泛型嵌套泛型_Java泛型嵌套