当前位置:   article > 正文

爬虫之如何爬取海量的图片_图集中图片url不变怎么爬取

图集中图片url不变怎么爬取

1.给浏览器安装xpath插件

具体内容查看博客:https://blog.csdn.net/weixin_57662182/article/details/127189108?spm=1001.2014.3001.5502

2.查看图片网站的url

因为这里有很多页图片,需要查看每一页的url是如何编码的
发现他们的url都是

url = 'https:xxxxxxxx'+str(page)+'.html'
  • 1

所以我们写一个def create_request(page)方法,用来设置要爬取的网页url代码如下:

def create_request(page):
    url = 'https:xxxxxxxxxxx'+str(page)+'.html'
    # 反爬手段
    headers = {
        'User-Agent': 'xxxxxxxxxxxxxxxxxxxxxxxxxx'

    }
    # 请求对象的定制
    request = urllib.request.Request(url=url, headers=headers)
    return  request
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

其中headers的值设置是用来反爬虫的,它是从网页上获取的:
在这里插入图片描述

3.xpath插件的使用

如果安装好之后,ctrl+shift+x即可出现一个小黑框,然后进行如下操作即可查看自己想要的数据:
解析网站里面的图片地址:
在这里插入图片描述
解析网站的图片名字:
![在这里插入图片描述])

4.具体代码以及解释

需要的依赖:

import  urllib.request
import  urllib.parse
from lxml import etree
  • 1
  • 2
  • 3

设置url的def create_request(page)函数

def create_request(page):
    url = 'https:xxxxxxxxxxxxx'+str(page)+'.html'
    # 反爬手段
    headers = {
        'User-Agent': 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'

    }
    # 请求对象的定制
    request = urllib.request.Request(url=url, headers=headers)
    return  request
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

接下来我们写一个def get_content(request)函数用来获取网站的内容,这里要注意可能网页的编码是gb2312也可能是utf-8,我们只需要打印content查看一下页面的编码是那个即可。

def get_content(request):
    response = urllib.request.urlopen(request)
    content = response.read().decode('gb2312')#可能是utf-8,输出content即可知道
    return content
  • 1
  • 2
  • 3
  • 4

获取完网站的数据之后,我们需要解析需要的数据,比如图片、标题之类的,这里我们只获取图片和图片信息:
tree.xpath里面的东西就是上面xpath的解析代码:

def down_load(content):
    tree=etree.HTML(content)
    name_list=tree.xpath('//div[@class="g-gxlist-box g-box-1200 m-margin15 clearfix"]//a/img/@alt')
    src_list=tree.xpath('//div[@class="g-gxlist-box g-box-1200 m-margin15 clearfix"]//a/img/@src')# 可能会出现懒加载
    print(len(name_list),len(src_list))
    for i in range(len(name_list)):
        name=name_list[i]
        src=src_list[i]
        urllib.request.urlretrieve(url=src,filename='./img/'+name+'.jpg')
        print(name,src)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

最后写一个主函数调用他们:

if __name__ == '__main__':
    start_page=int(input('请输入起始页码'))
    end_page=int(input('请输入结束页面'))

    for page in range(start_page,end_page+1):
        requests=create_request(page)
        # 获取网页的源码
        content=get_content(requests)
        # # 数据下载到本地
        down_load(content)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

最后记得创建一个img的文件夹

5.效果图

下载的图片:
在这里插入图片描述
谢谢你这么优秀,还关注我。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/437302
推荐阅读
相关标签
  

闽ICP备14008679号