-
【Python爬虫】:爬取干货集中营上的全部美女妹子(翻页处理)
一.确定爬取思路
今天突发奇想,能不能使用python爬虫来爬取一些妹子图片呢,于是摩拳擦掌开始干了起来。首先打开网页htttps://gank.io 当中的妹子专栏,
发现里面全是妹子,如下所示:
网址如下所示:
https://gank.io/special/Girl
翻到最下面发现按钮,一共有十个分页,如下所示:
因此我点击了第二个分页,进去查看网页,看点击之后的网址会不会发生改变,如果网址没有发生改变。说明这是一个静态网页,如果改变则说明点击按钮触发了ajax请求,则有可能是get也有可能是post请求。
后来观察发现网址变成了:
https://gank.io/special/Girl/page/2
翻页到第三页,网址则变成了:
https://gank.io/special/Girl/page/3
因此我们肯定是加载的静态网页,因此我们进行翻页就太简单了,只需要变化请求网页的网址即可。于是我们在每一个网页当中查看当前网址的源代码,找到图片源在哪儿:
如下图所示:
这样我们就可以确定图片的url了,在爬取的时候在后面加上jpg的后缀即可。
二.开始编写代码
这样代码就很简单了,如下所示:
import requests import re import time from pandas import Series,DataFrame #1.编写爬取美女土图片 headers={ 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36' } page_text='' print("开始网络爬虫!!") for i in range(1,10): #对指定url发起的请求url是携带参数的 url = 'https://gank.io/special/Girl/page/' url=url+str(i) print(url) response=requests.get(url=url,headers=headers) page_text=page_text+'\n'+response.text print("这是第{}轮爬取".format(i)) #print(page_text) page_text=page_text.split("\n") # style="background-image:url( # 这里进行正则匹配 url_list=[] for i in page_text: if re.match(' style="background-image:url',i): url_list.append(i) else: pass i=0 while i<len(url_list): url_list[i]='https://gank.io'+eval(url_list[i].split("(")[1].split(")")[0]) i+=1 #开始下载图片,每下载成功一次图片,就会显示下载成功 for i in url_list: image_data=requests.get(i,headers=headers).content image_name='/'+i.split("/")[4] image_path='./'+image_name+'.jpg' with open(image_path,'wb') as fp: fp.write(image_data) print("{} : 下载成功!".format(image_name))
得解!最后在文件夹里的图片如下所示:
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
SQL Server -- 解决存储过程传入参数作为s
JavaScript判断两个数组相等的四类方法
js如何操作video标签
React实战--利用甘特图和看板,强化Paas平
【记录】正则替换的偏方
前端下载 Blob 类型整理
抽象语法树AST必知必会
关于JS定时器的整理
JS中使用Promise.all控制所有的异步请求都完
js中字符串的方法
import-local执行流程与node模块路径解析流程