Python网络爬虫--项目实战(1)--500px图片爬取

一、目标

爬取500px图片并保存

目标网址:https://500px.com.cn/community/discover

二、分析

2.1 网站分析:

经过研究发现该网站没有点击下一页的按钮,然后往下拖动下拉条直到最后,会自动刷新出新的内容,基本可以得出该网页是动态刷新的。

或者ctrl+U 打开页面源码,复制粘贴一张图片的地址,在源码中找不到对应的地址,也可以判断该页面为动态加载的。

2.2 反爬分析:

相同的IP爬取大量的图片可能会被反爬(频率反爬),故需要采用UA池

三、注意点:

1.一定要选取正确的网页接口,接口一般包含该网页的全部信息
2.找到接口并找到每张图片的对应地址后,发现该地址并不完整需要我们手动拼接一部分内容,此处为"!p4"或者"!a1"。

四、代码

import uuid

import requests
from fake_useragent import UserAgent


class Spider_Photoes(object):

    def __init__(self):
        ua = UserAgent()
        self.url = 'https://500px.com.cn/discover/rating?resourceType=0,2&category=&orderBy=rating&photographerType=&startTime=&page={}&size=20&type=json'
        self.headers = {
            'User - Agent': ua.random
        }

    def get_etree(self,url):

        response = requests.get(url,headers=self.headers)

        html = response.json()
        return html

    def get_img_url(self,html):
        img_list = html.get('data')
        for img in img_list:
            filename = uuid.uuid4().hex+'.jpg'
            img_url = img.get('url').get('baseUrl')+'!a1'
            print(img_url)
            response = requests.get(img_url,headers=self.headers)
            with open('./picture/'+filename,'wb') as w:
                w.write(response.content)
                w.flush()


    def main(self):
        start_page = int(input('输入起始页码:'))
        end_page = int(input('输入结束页码:'))
        for page in range(start_page, end_page + 1):
            print('第%d页'%page)
            url = self.url.format(page)
            html = self.get_etree(url)
            self.get_img_url(html)
if __name__ == '__main__':
    sp = Spider_Photoes()
    sp.main()
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值