糗事百科-动态获取全部页码数并爬取图片
练习
import requests
import jsonif __name__ == "__main__":# 指定urlurl = 'https://pic.qiushibaike.com/system/pictures/12348/123484325/medium/6UZ51MRIVF06EX0A.jpg'# 进行UA伪装headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36'}# content返回的是二进制形式的图片数据# text(字符串) content(二进制) json() (对象)img_data = requests.get(url=url).content# 'wb'为写入二进制with open('./qiutu.jpg','wb') as fp:fp.write(img_data)
新学知识:正则表达式在解析界面时一般会用到re.S
爬取糗事百科图片
查看网页的源码我们可以在翻页栏这里看到存有页数的信息,通过正则表达式去获取到最后一项对应的页数,即为总页数
正则的形式可以写成:'<span class="page-numbers">(.*?)</span>'
下面是完整代码
import requests
import json
import re
import osif __name__ == "__main__":# 创建一个文件加用来保存所有图片吗if not os.path.exists('./qiutuLibs'):os.mkdir('./qiutuLibs')# 进行UA伪装headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36'}# 设置一个通用的url模板# 指定urlurl = 'https://www.qiushibaike.com/imgrank/page/%d'# 获取总页数url_first = 'https://www.qiushibaike.com/imgrank'page_text = requests.get(url=url_first, headers=headers).textpage_nums = re.findall('<span class="page-numbers">(.*?)</span>', page_text, re.S)page_num = int(page_nums[-1])# 遍历每一页for pageNum in range(1,page_num+1):# 对应页码的urlnew_url = format(url%pageNum)# 使用通用爬虫对url对用的一整张页面进行爬取page_text = requests.get(url=new_url, headers=headers).text# 使用聚焦爬虫将页面中所有的图片解析提取ex = '<div class="thumb">.*?<img src="(.*?)" alt.*?</div>'# 正则作用在数据解析一般使用re.Simg_src = re.findall(ex,page_text,re.S)# print(img_src)for src in img_src:# 协议头拼接,形成完整urlsrc = 'https:'+src# 请求到了图片的二进制数据img_data = requests.get(url=src, headers=headers).content# 生成图片名称img_name = src.split('/')[-1]imgPath = r'./qiutuLibs/'+img_namewith open(imgPath,'wb') as fp:fp.write(img_data)print(img_name,"下载成功!!!")
糗事百科-动态获取全部页码数并爬取图片相关推荐
- 5 使用ip代理池爬取糗事百科
从09年读本科开始学计算机以来,一直在迷茫中度过,很想学些东西,做些事情,却往往陷进一些技术细节而蹉跎时光.直到最近几个月,才明白程序员的意义并不是要搞清楚所有代码细节,而是要有更宏高的方向,要有更专 ...
- 使用re模块获取糗事百科上的笑话
获取的只有这个标签下面的内容,不包含图片格式,因为图片格式在编译器上面不显示 代码中为了消除空格还有换行的影响,直接把空格还有换行转化为啥都没有(空字符),注意网页的防爬虫,要记得伪装代码 #!/us ...
- JavaScript获取本机浏览器UA助力Python爬取糗事百科首页
问题背景: 使用Python编写爬虫时,经常会遇到反爬机制,例如网站要求必须使用浏览器访问.就像下面的403错误: 或者下面这种错误信息: 一般来说,这是遇到反爬机制了,对方要求使用浏览器访问.这时可 ...
- 获取糗事百科段子内容(根据网络代码改编)
最近在学习获取网络数据,在网上看到一个获取获取糗事百科段子内容的实例(点击打开链接) 因为糗事百科的版本变化了所以原代码不可以直接使用,在评论中有可直接使用的代码,下面的代码是我根据博主的源码改编而成 ...
- 使用BeautifulSoup模块获取糗事百科上的笑话
更多解释在打开链接,这里使用BeautifulSoup爬取 #!/usr/bin/python #coding: utf-8from bs4 import BeautifulSoup import r ...
- Python爬虫实战(1):爬取糗事百科段子
Python爬虫入门(1):综述 Python爬虫入门(2):爬虫基础了解 Python爬虫入门(3):Urllib库的基本使用 Python爬虫入门(4):Urllib库的高级用法 Python爬虫 ...
- 前端开发~uni-app ·[项目-仿糗事百科] 学习笔记 ·008【首页开发】
注:前言.目录见 https://god-excious.blog.csdn.net/article/details/105312456 文章目录 [024]page-json配置 [025]图文.视 ...
- python大神写的代码_【python】抄写大神的糗事百科代码
importurllib.requestimporturllib.parseimportreimporttime#糗事百科爬虫类 classQSBK:#初始化方法,定义一些变量 def __init_ ...
- python爬虫之糗事百科
历经1个星期的实践,终于把python爬虫的第一个实践项目完成了,此时此刻,心里有的只能用兴奋来形容,后续将继续加工,把这个做成一个小文件,发给同学,能够在cmd中运行的文件.简化版程序,即单单爬取页 ...
最新文章
- python文件的基础操作
- java8 hashmap 死循环_踩坑了,JDK8中HashMap依然会死循环!
- [react] 怎样在react中创建一个事件?
- eclipse项目导入idea部署到tomcat
- Bootstrap 警告框插件Alert
- raid硬盘序列号_磁盘阵列出现坏盘,如何正确更换硬盘?
- win7计算机右键直接有设备管理器等相关,为什么我的计算机点击右键后里头没有设备管理器了?windows7旗舰版的,不知怎么就不见了...
- java中add和addall区别,java中list的add与addall方法区别
- 华硕飞行堡垒触摸板快捷键失效
- 初学者用什么数位板好,手绘板选择注意什么?
- 中心极限定理 central limit theorem
- 不用写采集规则也可以轻松采集网站文章,揭秘一款明泽文章采集软件的工作原理
- 第四章 玩转捕获数据包
- Charles 乱码解决办法
- 【Verilog数字系统设计(夏雨闻)6-------模块的结构、数据类型、变量和基本运算符号2】
- ubuntu18.04 texstudio下使用自动化学报latex模板的坑
- 利用百度地图API查询任意两点间的车行距离、时间和通过的道路名称
- 起因:想要用visio画框图
- Windows下在VS-Code将本地图片加载至资源文件【可使用】
- 职场分享:工作中我们需要进行情绪管理
热门文章
- 什么是ROC曲线?为什么要使用ROC?以及 AUC的计算
- 相亲其实没有那么难!
- 算法实例_线性表 By:比方
- 计算机选北航还是南科大,今年高考招生“卷中卷”,大一变高四,北航四大试验班,南科大……...
- Jenkins教程(3)使用npm构建Node.js和React应用
- [笔记分享] [SCons] SCons工具之Manipulation
- 恢复时间目标(RTO)和恢复点目标(RPO)的差异
- C# DocX操作Word文档(.docx)
- html css div自适应屏幕宽度,高度
- 《金蝶ERP-K/3完全使用详解》——6.3 系 统 设 置