Python爬虫:解析异步加载的图片网站(实例)

以360图片站为例:
https://image.so.com/z?ch=wallpaper#/

爬取其壁纸频道,前9页,共270张壁纸缩略图:
在这里插入图片描述
在这里插入图片描述

"""
360图片网站爬虫
网站图片爬取

"""

import requests
from urllib.parse import urlencode #把字典转化为url参数

'''
链接分析:
https://image.so.com/zjl?ch=wallpaper&sn=30&pn=30&prevsn=0
https://image.so.com/zjl?ch=wallpaper&sn=60&pn=30&prevsn=30
https://image.so.com/zjl?ch=wallpaper&sn=90&pn=30&prevsn=60
https://image.so.com/zjl?ch=wallpaper&sn=120&pn=30&prevsn=90
'''
#构建参数字典
def create_params():
    urls = []
    for i in range(1,10):
        params = {
            'ch' : 'wallpaper',
            'sn' : i*30,
            'pn' : '30',
            'prevsn' : i*30-30
        }
        url = 'https://image.so.com/zjl?'
        #把字典转化为url参数
        params_list = urlencode(params)
        #拼接URL
        url = url+params_list
        urls.append(url)
    print(urls)
    return urls

#请求网页
def request_pages(url):
    ua = {'User-Agent':'User-Agent:Mozilla/5.0 (Windows NT 6.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1'}
    resp = requests.get(url,headers = ua)
    print("请求状态:%d"%(resp.status_code))
    #将网页内容转换为json格式
    html_json = resp.json()
    #print(html_json)
    return html_json

#提取图片链接列表
def get_image_list(html_json):
    image_list = html_json['list']
    #print(image_list[0])
    image_url_list=[]
    for item in image_list:
        temp = {'title':item['title'],'imgurl':item['qhimg_thumb']}
        image_url_list.append(temp)
    #print(image_url_list)
    return(image_url_list)

#保存图片
def save_img(image_url_list):
    for i in image_url_list:
        print(i)
        img_resp = requests.get(i['imgurl'])
        try:
            with open(r'C:\pics\%s.jpg'%(i['title']),'bw') as imgf:
                imgf.write(img_resp.content)
            if 'qhmsg' not in i['imgurl']:
                continue
        except:
            with open(r'C:\pics\%s.jpg'%(i['title'][:3]),'bw') as imgf:
                imgf.write(img_resp.content)
            if 'qhmsg' not in i['imgurl']:
                continue
    print("success")

def main_def():
    urls = create_params()
    for url in urls:
        html_json = request_pages(url)
        image_url_list = get_image_list(html_json)
        save_img(image_url_list)
    
if __name__ == '__main__':
    main_def()

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python爬虫可以用来自动爬取百度图片,实现批量下载图片的功能。通过使用Python编程语言和相关的库函数,我们可以编写爬虫脚本来完成这个任务。 Python爬虫领域非常常用,因为它有着丰富的库函数和强大的功能,特别是在人工智能和图像处理方面有着突出的表现。 在爬取百度图片时,我们需要注意到百度图片的翻页方式是瀑布流,通过滚动滑轮触发JS进行异步加载,而不是之前的点击下一页的方式。这给爬虫增加了一定的难度。但是通过之前的文章,我们可以找到一篇描述了爬取百度图片的方法,其中介绍的方式可能还是之前的点击下一页的方式。 因此,如果你对爬虫有兴趣,可以尝试使用Python编写一个爬取百度图片的脚本,通过学习和实践,你可以更深入地了解爬虫的知识和应用。同时,你也可以不定期关注爬虫实例和教程,以获得更多的学习和交流的机会。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [python 爬虫(1)--爬取百度图片,你确定不来看一看](https://blog.csdn.net/weixin_46897073/article/details/111827736)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值