前几天刚好看到有人在教学爬取唯美女生网站()的图片,大致听了一下,只是介绍了一次爬取某一个小姐姐的照片,因此就尝试做一个爬取全站小姐姐照片的爬虫,也算是对最近所学知识的应用和总结。
通过爬虫爬取唯美女生网站上所有小姐姐的照片。
1.要保存所有小姐姐的照片就需要依次分别保存每个小姐姐的照片,就需要访问每一篇文章,并获得每一张照片的地址;
2.要保存每位小姐姐的全部照片就需要把文章的每一页进行访问,以获得每一页上的每一张照片;
1.获得每篇文章的链接;
2.获得每篇文章每一页的链接;
3.获得每篇文章每一页中的照片链接;
4.保存每张照片;
5.为了方便整理,用以文章名字命名的文件夹保存照片;
1.requests模块 是python实现的爬取网页最简单易用的HTTP模块,用于访问网页;
2.re模块 正则表达式模块,用于对获得的数据进行清洗,使得规范;
3.os模块 操作系统模块,用于创建文件夹;
4.time模块 时间模块,用于设定延时,避免网站崩溃;
def 语句 定义函数,对于重复的步骤进行调用;
for 语句 循环语句,对于步骤进行循环;
break语句 终止循环语句,对于满足某一条件后的内容进行终止循环
if 语句 条件语句,根据条件确定执行步骤;
else 语句 条件语句 ,根据条件确定执行步骤;
len() 方法返回对象(字符、列表、元组等)长度或项目个数;
打开唯美女生网站(),页面分为多个栏目,而在栏目【站点地图】()中有最新文章内容,基本涵盖整个网站所有的文章,因此将通过访问该网站来获得每个文章的网址。查看源代码发现,所有文章网址均有序排列。
因此,首先将通过访问该页面获得所有文章链接。
在使用爬虫时要想利用‘user-agent’进行伪装。
接下来,使用requests模块中的get()函数来模拟访问并将得到的内容保存在变量response中,并将获得的网页内容用文本形式显示出来。
获得网页内容后通过正则表达式来获得所有文章的链接。观察获得的网页内容中的所有文章链接均为`https://www.vmgirls.com/XXXXX.html的形式,因而可以利用正则表达式来获得所有文章网址。
再次利用requests.get()函数结合for语句来获得每篇文章中的图片网址,并利用正则表达式对获得的网页中的图片网址进行清洗提取。该网站是私人网站,因此在访问网页的过程中加上了延时。
通过查看文章,发现部分文章存在多页的情况,每页上均有图片,因此需要对每一页文章进行爬取来获得图片网址。打开文章第2页,第3页后发现网址的格式为,因此可以通过将网址分割为后与利用range()函数来生成数字后和进行拼接。
在设定文章翻页时可能设定了相对较多的页码,而文章实际并不存在相应的页码,因此要进行判断,并决定下一步的运行程序,如果在页面中得到图片网址则执行相关的保存,否则直接输出后使用break语句终止循环。
在爬取整个网站过程中由于页面相对较多,同时为了及时获得每一页的图片,因此在获得相关图片地址后就进行目录创建和保存,因为要多次调用,因而定义一个函数来方便使用。