爬取糗事百科上的照片
”明月如霜,好风如水,清景无限 “
爬取图片,是一项很常见的需求,后期文远会尝试一些反反爬策略爬取一些美妙的图片,尽请期待。
壹
直接分析,找到只有图片的网址:
同样打开开发者模式,发现每一张图片对应一个class=“thumb”,如下图:
从而找到了这样一个字段,
<img src="//pic.qiushibaike.com/system/pictures/12379/123795110/medium/BWSV4O39WTP07EN5.jpg" alt="糗事#123795110" class="illustration" width="100%" height="auto">
根据数据解析的知识(正则,bs4 ,xpath),咋们先来最难的,其实文远也没弄太明白。照葫芦画瓢而已,
ex='<div class="thumb">.*?<img src="(.*?)" alt.*?</div>'
即.*?
代表的是任意字段,匹配的是开头特征为<div class="thumb">
,中间任意,再到接近目标网址开头的<img src=
,而后是匹配网址字段用"(.*?)"
代替,结束的标志是 alt.*?</div>
,与上面是一样的,意思是alt
开头,</div>
结尾。
来张清楚点的纯照片地址来源:
贰
分析结束,上代码:
import requests
import re
import os
import numpy as np
headers={'User=Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.193 Safari/537.36'
}
if not os.path.exists('./糗百'):os.mkdir('./糗百')all_img_list=[]
url='https://www.qiushibaike.com/imgrank/page/{}/'
准备好,库和参数等,,,
for pageNum in range(1,11):new_url=url.format(pageNum)
# print(new_url)page_text=requests.get(url=new_url,headers=headers).textex='<div class="thumb">.*?<img src="(.*?)" alt.*?</div>'img_src_list=re.findall(ex,page_text,re.S)all_img_list.append(img_src_list)
还是上次的问题,总页面数量先跳过,暂定10页,这里最重要的就是正则表达式这句,记住re.S代表多行匹配(m单行),此时
all_img_list维度为(10*25)
all_img=np.array(all_img_list)
all_img=all_img.reshape(250,)
维度转一下,转为(250,)
for index,img in enumerate(all_img):img_url='https:'+imgimg_data=requests.get(url=img_url,headers=headers).contentimg_name=str(index)+'.jpg'img_path='./糗百/'+img_namewith open(img_path,'wb') as f:f.write(img_data)print(img_name,",下载成功!!!!!!!!")
这里便结束了,需要注意的是,照片是二进制文件,.content的返回值才是二进制,文远个人建议的命名方式就是数字,比较清晰明了。除此之外,注意爬取的all_img_list没有带协议头,需要加上’https:’。
叁
放上代码运行图:
肆
最终的文件:
当然,本文的完整代码上传到了码云,点击阅读原文即可,记得Star啊
END
作者:不爱夜跑的影迷不是好程序猿
喜欢的话请关注点赞
爬取糗事百科上的照片相关推荐
- 14. python爬虫——基于scrapy框架爬取糗事百科上的段子内容
python爬虫--基于scrapy框架爬取糗事百科上的段子内容 1.需求 2.分析及实现 3.实现效果 4.进行持久化存储 (1)基于终端指令 (2)基于管道 [前置知识]python爬虫--scr ...
- Python爬虫实战(1):爬取糗事百科段子
Python爬虫入门(1):综述 Python爬虫入门(2):爬虫基础了解 Python爬虫入门(3):Urllib库的基本使用 Python爬虫入门(4):Urllib库的高级用法 Python爬虫 ...
- python爬虫经典段子_Python爬虫实战(1):爬取糗事百科段子
大家好,前面入门已经说了那么多基础知识了,下面我们做几个实战项目来挑战一下吧.那么这次为大家带来,Python爬取糗事百科的小段子的例子. 首先,糗事百科大家都听说过吧?糗友们发的搞笑的段子一抓一大把 ...
- JavaScript获取本机浏览器UA助力Python爬取糗事百科首页
问题背景: 使用Python编写爬虫时,经常会遇到反爬机制,例如网站要求必须使用浏览器访问.就像下面的403错误: 或者下面这种错误信息: 一般来说,这是遇到反爬机制了,对方要求使用浏览器访问.这时可 ...
- 读书笔记(4)——python爬取糗事百科,并存到MySQL中
2019独角兽企业重金招聘Python工程师标准>>> 安装MySQL.使用phpStudy集成工具来安装MySQL服务器,或者可以用USBwebserve进行安装. 打开USBwe ...
- python实现数据爬取——糗事百科爬虫项目
python实现数据爬取--糗事百科爬虫项目 # urllib.request 请求模块 import urllib.request # re 模块使 Python 语言拥有全部的正则表达式功能. i ...
- 转 Python爬虫实战一之爬取糗事百科段子
静觅 » Python爬虫实战一之爬取糗事百科段子 首先,糗事百科大家都听说过吧?糗友们发的搞笑的段子一抓一大把,这次我们尝试一下用爬虫把他们抓取下来. 友情提示 糗事百科在前一段时间进行了改版,导致 ...
- Python爬虫学习笔记 -- 爬取糗事百科
Python爬虫学习笔记 -- 爬取糗事百科 代码存放地址: https://github.com/xyls2011/python/tree/master/qiushibaike 爬取网址:https ...
- 爬虫第四战爬取糗事百科搞笑段子
又开始了新的篇章,本熊继续一个Python小白的修行之路,这次要爬取糗事百科主页的段子,恩 ..看起来不错的样子,只是段子不能吃 ,不然,啧啧... 相信很多人有去糗百看段子减压的习惯,如果能把这些段 ...
最新文章
- MTK DDR不能兼容分析
- wchar_t 的输出问题
- 无法生成部件汇总表_RFID在汽车零部件企业仓储物流中的应用
- 字符串的全排列JAVA实现
- virtualbox linux通用网卡,详解VirtualBox + CentOS 虚拟机网卡配置
- Excel如何将数据填充完下方的空白单元格
- Windows 远程桌面(RDP)客户端相关工具
- python:BeautifulSoup解析爬取网页文章demo
- linux云主机登陆教程,登录linux云服务器的详情步骤
- selenium Gird
- Chrome 设置黑色模式
- 在vc中作用mapx
- MNL——多项Logit模型学习笔记(二)
- 关于linux 僵尸进程
- eBox(stm32) 之中断结构
- C3P0 连接问题 An attempt by a client to checkout a Connection has timed out.
- 小小爬虫成长记第一天
- C++多线程学习(三)——线程同步之条件变量
- 一个 ABAP 开发的新浪微博语义情感分析工具
- python的科学计算库有哪些_python科学计算:带你初探scipy库的常量模块和函数模块...