【Python爬虫实战】2020最新无错误,头条爬取图片实战,Ajax异步加载,附有源码

头条搜索关键词,爬取相关图片

头条的爬取设计Ajax数据的爬取。

导入包:

import requests
import time
import os
import re
from hashlib import md5
from urllib.parse import urlencode
from multiprocessing.pool import Pool

分析

打开Chrome/Safrai中的检查—网络,在头条官网上进行搜索,例如:天气之子,向下滚动,加载所有的信息,如下所示:

在这里插入图片描述

选择XHR,进行预览,分析data,我们主要是获取图片和它的标题(方便分类保存),如下所示:
在这里插入图片描述

我们观察发现:

  • 图片的url都属于image_list字段,且data中表明了大图片的url格式,我们可以对提取的url更改为大图片的url;
  • data中有些并不包含image_list或title,可以将这些情况去除;

加载单个Ajax请求

对请求头部进行分析:
在这里插入图片描述

在这里插入图片描述

通过对两个URL的格式分析,变化的参数只有offset,它的变化规律为0,20,40,…我们可以推断出它是一个偏移量,故我们可以设置参数offset,方便后续去加载所有的Ajax请求。

时间戳进行构造:'timestamp' : int(time.time_ns() / (10**6)),好像并不重要。

请求头部需要添加cookie,不然返回为空。

urlencode:将参数进行序列化;

返回爬取页面的json形式,在对其进行解析时就不需要解析库进行分析了;

def get_page(offset):
	params = {
   
		'aid': 24,
		'app_name': 'web_search',
		'offset': offset,
		'format': 'json',
		'keyword': '天气之子'
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值