zoukankan      html  css  js  c++  java
  • 【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+'
    '+response.text
        print("这是第{}轮爬取".format(i))
    
    #print(page_text)
    
    page_text=page_text.split("
    ")
    #               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))

    得解!最后在文件夹里的图片如下所示:

  • 相关阅读:
    TCP 的那些事儿(转载)
    3. 对象在内存中的布局
    GO语言学习之数据类型-->基本类型(字符串)
    GO语言学习之变量and常量
    wrk
    为什么显示消息“错误:您所在国家/地区是禁运国,无法下载 Java”?
    raw.githubusercontent.com 访问不了
    Windows Terminal
    vue:无法加载文件C:UsersAppDataRoaming pmvue.ps1, 在此系统上无法加载脚本
    vue使用过滤改变el-switch开关的状态
  • 原文地址:https://www.cnblogs.com/geeksongs/p/14285826.html
Copyright © 2011-2022 走看看