python爬虫 爬取小姐姐图片


前言

大致熟悉了python的基础语法以后,开始学习爬虫基础。


一、爬取前的准备工作

  1. python3.7环境(只要是python3版本都可以);
  2. 依赖包 : time requests re (缺少包的话,直接命令行中 pip install + 包名 下载);
  3. python编辑器,本人使用pycharm(能编辑运行python程序即可)

二、分析爬取网站并爬取

1. 观察所要爬取网站信息

(1) 打开小姐姐网站,点击鼠标右键,检查,此时进入开发者模式,点击开发者窗口中的 network ,重新刷新界面,然后在下面的 Name 一栏中点击我们的第一个网址,在右边的 Header 中可以看到我们访问的信息。我们找到 Request Headers 中的 cookieUser-Agent,我们保存下来。

如下示例:

图片首页

(2) 打开心仪的小姐姐的页面进入,同上,点击鼠标右键,检查。首先点击小箭头,然后在左边的网页上点到你想要查看的图片上,在右边窗口中就会显示出图片的信息。

如下示例:

小姐姐图片

(3)接下来我们就要分析图片的地址。在(2)中我们找到了图片元素,我们观察可以发现图片元素包含在一个 a 标签中,而我们想要的图片路径就是a 标签中的 href 属性。

如下示例:

在这里插入图片描述
我们把鼠标移动到href属性中的路径上停留几秒钟可以发现图片的完整路径(是不是很神奇呀!)。我们保存一下这个完整路径。

如下示例:

在这里插入图片描述

经过以上对图片网站的分析,接下来我们就可以顺利的编代码啦。

2. 爬取完整代码

代码如下(示例):

import time
import requests
import re


def get_Data(base_url):
    Rheaders = {
    # 这里需要爬取网站首页的cookie。(没有cookie图片可能会出错,用自己的cookie)
        "cookie": "__cfduid=d5411884fe8db207f3f03481febfe233e1598005261; __gads=ID=7a29c02809efefed:T=1598005261:S=ALNI_MZ6fuEEp6EyyCZwFhe5REJdwC5IsQ; _ga=GA1.2.1470230754.1598005306; _gid=GA1.2.1918223717.1598005307; Hm_lvt_a5eba7a40c339f057e1c5b5ac4ab4cc9=1597913712,1598001373,1598005230,1598007422; _GPSLSC=; xcat_sign_cookie=2097c21e431a2a007b125e4fc599a50c; Hm_lpvt_a5eba7a40c339f057e1c5b5ac4ab4cc9=1598008115",
        # "cookie":"__cfduid=d5411884fe8db207f3f03481febfe233e1598005261; Hm_lvt_a5eba7a40c339f057e1c5b5ac4ab4cc9=1597396642,1597913712,1598001373,1598005230; __gads=ID=7a29c02809efefed:T=1598005261:S=ALNI_MZ6fuEEp6EyyCZwFhe5REJdwC5IsQ; _GPSLSC=; xcat_sign_cookie=2097c21e431a2a007b125e4fc599a50c; _ga=GA1.2.1470230754.1598005306; _gid=GA1.2.1918223717.1598005307; Hm_lpvt_a5eba7a40c339f057e1c5b5ac4ab4cc9=1598006751; _gat_gtag_UA_127463675_2=1",
        # 设置代理,伪装成浏览器。
        "user-agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36"
    }

    response = requests.get(base_url,headers = Rheaders)
    response.encoding = 'utf-8'
    html = response.text
    #print(html)
    image_urls = re.findall('<a href="(.*?)" alt=".*?" title=".*?">', html)
    #print(image_urls)
    return image_urls
# print(get_Data('https://www.vmgirls.com/12985.html'))

def save_Data(image_urls):
    Rheaders = {
        "cookie":"__cfduid=d5411884fe8db207f3f03481febfe233e1598005261; __gads=ID=7a29c02809efefed:T=1598005261:S=ALNI_MZ6fuEEp6EyyCZwFhe5REJdwC5IsQ; _ga=GA1.2.1470230754.1598005306; _gid=GA1.2.1918223717.1598005307; Hm_lvt_a5eba7a40c339f057e1c5b5ac4ab4cc9=1597913712,1598001373,1598005230,1598007422; _GPSLSC=; xcat_sign_cookie=2097c21e431a2a007b125e4fc599a50c; Hm_lpvt_a5eba7a40c339f057e1c5b5ac4ab4cc9=1598008115",
        # "cookie":"__cfduid=d5411884fe8db207f3f03481febfe233e1598005261; Hm_lvt_a5eba7a40c339f057e1c5b5ac4ab4cc9=1597396642,1597913712,1598001373,1598005230; __gads=ID=7a29c02809efefed:T=1598005261:S=ALNI_MZ6fuEEp6EyyCZwFhe5REJdwC5IsQ; _GPSLSC=; xcat_sign_cookie=2097c21e431a2a007b125e4fc599a50c; _ga=GA1.2.1470230754.1598005306; _gid=GA1.2.1918223717.1598005307; Hm_lpvt_a5eba7a40c339f057e1c5b5ac4ab4cc9=1598006751; _gat_gtag_UA_127463675_2=1",
        "user-agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36"
    }
    path = 'https://www.vmgirls.com/'
    #爬取图片开始
    print("Begin >> >> >>")
    for url in image_urls:
        time.sleep(3)
        image_name = url.split('/')[-1]
        #print(image_name)
        response = requests.get(path + url,headers=Rheaders)
        # 这里的images3需要亲们手动建立在同级目录下
        with open('./images3/' + image_name,'wb') as f:
            f.write(response.content)
    print("<< << << Finish")
if __name__ == '__main__':
    # 网址为你想要爬取的页面(注意:必须为五个数的页面,比如:14012.html)
    save_Data(get_Data('https://www.vmgirls.com/14012.html'))
    #get_Data('https://www.vmgirls.com/12985.html')

这是我爬取下来的小姐姐图片,大家若是有什么疑问,欢迎评论,随时回复,也可以一起交流学习,共同进步

在这里插入图片描述


总结

1. 在爬取前,一定要分析网页结构;
2. 在代码上要注意设置user-agentcookie,可以防止爬取出问题哦;
3. 代码实现比较粗糙,以后会多多改进,使代码整洁,减少代码冗余,使代码高效执行。

  • 5
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 12
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值