Python学习教程:Python获取街拍美图

420 篇文章 12 订阅
73 篇文章 1 订阅

Python学习教程之爬虫:爬取街拍美图

1. 抓包

image

2. 查看参数信息

多看几页即可看见规律,主要改变的项无非是offset,timestamp,这里的stamp是13位的时间戳,再根据keyword改变搜索项,可以改变offset值实现翻页操作,其他的都是固定项

image

3. 数据解析

返回的数据中可以得到具体的栏目,image_list中是所有的图片链接,我们解析这个栏目,然后根据title下载图片即可

image

4. 流程分析

构建url发起请求,改变offset的值执行便利操作,对返回的json数据进行解析,根据title名称建立文件夹,如果栏目含有图片,则以title_num的格式下载图片

import requests

import os

import time

headers = {

‘authority’: ‘www.toutiao.com’,

‘method’: ‘GET’,

‘path’: ‘/api/search/content/?aid=24&app_name=web_search&offset=100&format=json&keyword=%E8%A1%97%E6%8B%8D&autoload=true&count=20&en_qc=1&cur_tab=1&from=search_tab&pd=synthesis&timestamp=1556892118295’,

‘scheme’: ‘https’,

‘accept’: ‘application/json, text/java’,

‘accept-encoding’: ‘gzip, deflate, br’,

‘accept-language’: ‘zh-CN,zh;q=0.9’,

‘content-type’: ‘application/x-www-form-urlencoded’,

‘referer’: ‘https://www.toutiao.com/search/?keyword=%E8%A1%97%E6%8B%8D’,

‘user-agent’: ‘Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36’,

‘x-requested-with’: ‘’,

}

def get_html(url):

return requests.get(url, headers=headers).json()

def get_values_in_dict(list):

result = []

for data in list:

result.append(data[‘url’])

return result

def parse_data(url):

text = get_html(url)

for data in text[‘data’]:

if ‘image_list’ in data.keys():

title = data[‘title’].replace(’|’, ‘’)

img_list = get_values_in_dict(data[‘image_list’])

else:

continue

if not os.path.exists(‘街拍/’ + title):

os.makedirs(‘街拍/’ + title)

for index, pic in enumerate(img_list):

with open(‘街拍/{}/{}.jpg’.format(title, index + 1), ‘wb’) as f:

f.write(requests.get(pic).content)

print(“Download {} Successful”.format(title))

def get_num(num):

if isinstance(num, int) and num % 20 == 0:

return num

else:

return 0

def main(num):

for i in range(0, get_num(num) + 1, 20):

url = ‘https://www.toutiao.com/api/search/content/?aid={}&app_name={}&offset={}&format={}&keyword={}&’ \

‘autoload={}&count={}&en_qc={}&cur_tab={}&from={}&pd={}&timestamp={}’.format(24, ‘web_search’, i,

‘json’, ‘街拍’, ‘true’, 20, 1, 1, ‘search_tab’, ‘synthesis’, str(time.time())[:14].replace(’.’, ‘’))

parse_data(url)

if name == ‘main’:

main(40)

更多的Python学习教程也会继续为大家分享,或者说大家有什么想学的内容也可以留言或者私信哦,人多的话,会考虑出一期

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值