练习

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. C++ goto的用法
  2. 将数组存入mysql数据库,将数组值写入mysql数据库
  3. html代码格式化vscode,vscode 代码格式化
  4. sql serve 数据库游标的使用
  5. 操作系统进程管理实验java_计算机考研操作系统进程管理
  6. 使用Tool Bar切换视图
  7. UVALive 7276 Wooden Signs (DP)
  8. css3新属性partA
  9. 复合索引失效的几种情况
  10. android软件游戏显示fps测试工具,fpsviewer—实时显示fps,监控Android卡顿的可视化工具...
  11. wamp5如何配置多个自定义域名访问本地不同的项目
  12. SQL Server认证培训与考试
  13. 计算机硕士论文的框架应该怎么写,计算机硕士论文提纲模板 计算机硕士论文框架怎样写...
  14. 看看你去苹果公司的话能挣多少钱
  15. 计算机把C盘无法扩展,如何解决可分配空间却无法扩展C盘的问题?
  16. Android手机不root查看/data/data/包名目录下的文件
  17. mysql timestamp格式化_mysql TIMESTAMP(时间戳)详解
  18. WampServer下载及安装相关问题
  19. nero刻录光盘的步骤图解
  20. 文献综述写作指导(1)——研究方向的确定与领域内研究点的梳理

热门文章

  1. SSRS中加入书签功能及数据集窗口
  2. 什么是期权行权,此次行权有何特殊之处!
  3. 信用卡nbsp;nbsp;知识
  4. 转 基于MySQL MEB的备份恢复
  5. 一文读懂shell命令
  6. vue 组件封装 确认弹框带可以自定义titile ,内容,和取消,确定按钮的弹窗 slot插槽
  7. Learning to Navigate Unseen Environments: Back Translation with Environmental Dropout
  8. 【论文阅读笔记】Learning To Detect Unseen Object Classes by Between-Class Attribute Transfer
  9. 从量变到质变,新华三不求最大但求最强
  10. CentOS 8构建桌面办公环境