练习

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,"下载成功!!!")

糗事百科-动态获取全部页码数并爬取图片相关推荐

  1. 5 使用ip代理池爬取糗事百科

    从09年读本科开始学计算机以来,一直在迷茫中度过,很想学些东西,做些事情,却往往陷进一些技术细节而蹉跎时光.直到最近几个月,才明白程序员的意义并不是要搞清楚所有代码细节,而是要有更宏高的方向,要有更专 ...

  2. 使用re模块获取糗事百科上的笑话

    获取的只有这个标签下面的内容,不包含图片格式,因为图片格式在编译器上面不显示 代码中为了消除空格还有换行的影响,直接把空格还有换行转化为啥都没有(空字符),注意网页的防爬虫,要记得伪装代码 #!/us ...

  3. JavaScript获取本机浏览器UA助力Python爬取糗事百科首页

    问题背景: 使用Python编写爬虫时,经常会遇到反爬机制,例如网站要求必须使用浏览器访问.就像下面的403错误: 或者下面这种错误信息: 一般来说,这是遇到反爬机制了,对方要求使用浏览器访问.这时可 ...

  4. 获取糗事百科段子内容(根据网络代码改编)

    最近在学习获取网络数据,在网上看到一个获取获取糗事百科段子内容的实例(点击打开链接) 因为糗事百科的版本变化了所以原代码不可以直接使用,在评论中有可直接使用的代码,下面的代码是我根据博主的源码改编而成 ...

  5. 使用BeautifulSoup模块获取糗事百科上的笑话

    更多解释在打开链接,这里使用BeautifulSoup爬取 #!/usr/bin/python #coding: utf-8from bs4 import BeautifulSoup import r ...

  6. Python爬虫实战(1):爬取糗事百科段子

    Python爬虫入门(1):综述 Python爬虫入门(2):爬虫基础了解 Python爬虫入门(3):Urllib库的基本使用 Python爬虫入门(4):Urllib库的高级用法 Python爬虫 ...

  7. 前端开发~uni-app ·[项目-仿糗事百科] 学习笔记 ·008【首页开发】

    注:前言.目录见 https://god-excious.blog.csdn.net/article/details/105312456 文章目录 [024]page-json配置 [025]图文.视 ...

  8. python大神写的代码_【python】抄写大神的糗事百科代码

    importurllib.requestimporturllib.parseimportreimporttime#糗事百科爬虫类 classQSBK:#初始化方法,定义一些变量 def __init_ ...

  9. python爬虫之糗事百科

    历经1个星期的实践,终于把python爬虫的第一个实践项目完成了,此时此刻,心里有的只能用兴奋来形容,后续将继续加工,把这个做成一个小文件,发给同学,能够在cmd中运行的文件.简化版程序,即单单爬取页 ...

最新文章

  1. python文件的基础操作
  2. java8 hashmap 死循环_踩坑了,JDK8中HashMap依然会死循环!
  3. [react] 怎样在react中创建一个事件?
  4. eclipse项目导入idea部署到tomcat
  5. Bootstrap 警告框插件Alert
  6. raid硬盘序列号_磁盘阵列出现坏盘,如何正确更换硬盘?
  7. win7计算机右键直接有设备管理器等相关,为什么我的计算机点击右键后里头没有设备管理器了?windows7旗舰版的,不知怎么就不见了...
  8. java中add和addall区别,java中list的add与addall方法区别
  9. 华硕飞行堡垒触摸板快捷键失效
  10. 初学者用什么数位板好,手绘板选择注意什么?
  11. 中心极限定理 central limit theorem
  12. 不用写采集规则也可以轻松采集网站文章,揭秘一款明泽文章采集软件的工作原理
  13. 第四章 玩转捕获数据包
  14. Charles 乱码解决办法
  15. 【Verilog数字系统设计(夏雨闻)6-------模块的结构、数据类型、变量和基本运算符号2】
  16. ubuntu18.04 texstudio下使用自动化学报latex模板的坑
  17. 利用百度地图API查询任意两点间的车行距离、时间和通过的道路名称
  18. 起因:想要用visio画框图
  19. Windows下在VS-Code将本地图片加载至资源文件【可使用】
  20. 职场分享:工作中我们需要进行情绪管理

热门文章

  1. 什么是ROC曲线?为什么要使用ROC?以及 AUC的计算
  2. 相亲其实没有那么难!
  3. 算法实例_线性表 By:比方
  4. 计算机选北航还是南科大,今年高考招生“卷中卷”,大一变高四,北航四大试验班,南科大……...
  5. Jenkins教程(3)使用npm构建Node.js和React应用
  6. [笔记分享] [SCons] SCons工具之Manipulation
  7. 恢复时间目标(RTO)和恢复点目标(RPO)的差异
  8. C# DocX操作Word文档(.docx)
  9. html css div自适应屏幕宽度,高度
  10. 《金蝶ERP-K/3完全使用详解》——6.3 系 统 设 置