头条搜索关键词,爬取相关图片
头条的爬取设计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': '天气之子'