ajax爬取今日头条街拍图片——data出现none的解决



  • 之前爬取总是出现如图的结果:手动打开url显示的是想要的结果,但是爬取的时候data为空
  • 尝试了多种方法,偶然得到了想要的结果:
  • 这是多次实验中成功与不成功结果中构造的url
  • 发现

1)得到想要结果,所构造的url中keyword=******与下一参数间没有&链接

2)同样的keyword=%E8%A1%97%E6%8B%8D,参用不同的方式:‘https://www.toutiao.com/api/search/content/?keyword=%E8%A1%97%E6%8B%8D’+urlencode(params)

               requests.get(‘https://www.toutiao.com/api/search/content/?’,params=params)

得到的url结果是不一样的,前一个的keyword不变,还是%E8%A1%97%E6%8B%8D,后一种方式得到的keyword变成了%25E8%25A1%2597%25E6%258B%258D

  • 因为不是科班专业,仅仅根据自己所学的比较浅薄的知识连蒙带猜得出来的结果,还希望有专业人士解释一下,嘻嘻。
  • 附上部分代码
import requests
from urllib.parse import urlencode

def get_page(offset):

    params={

        ‘aid‘:24,
        ‘app_name‘:‘web_search‘,
        ‘format‘:‘json‘,
        ‘offset‘:offset,

        ‘autoload‘:‘true‘,
        ‘count‘:20,
        ‘en_qc‘:1,
        ‘cur_tab‘:1,
        ‘from‘:‘search_tab‘,
        ‘pd‘:‘synthesis‘
    }

    headers={
        ‘X-Requested-With‘:‘XMLHttpRequest‘,
        ‘Cookies‘:‘tt_webid=6788393831844185614; WEATHER_CITY=%E5%8C%97%E4%BA%AC; tt_webid=6788393831844185614; csrftoken=0fd39b0f026752a8f38a902ab9226d44; s_v_web_id=k64mh7pe_9IueD6zl_X1iG_4smt_8Dkd_SMrb5NXXMR8G; __tasessionId=naf9b8ylp1580623604878‘,
        ‘Host‘:‘www.toutiao.com‘,
        ‘Referer‘:‘https://www.toutiao.com/search/?keyword=%E8%A1%97%E6%8B%8D‘,
        ‘User-Agent‘:‘Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36‘
            }
    try:
        url=‘https://www.toutiao.com/api/search/content/?keyword=%E8%A1%97%E6%8B%8D‘+urlencode(params)
        response=requests.get(url,headers=headers)
        response.raise_for_status
        response.encoding=response.apparent_encoding
        print(response.url)
        return response.json()
    except:
        print(‘爬取出错‘)

原文地址:https://www.cnblogs.com/fran-py-/p/12253039.html

时间: 2024-10-04 17:34:59

ajax爬取今日头条街拍图片——data出现none的解决的相关文章

芝麻HTTP:分析Ajax爬取今日头条街拍美图

本节中,我们以今日头条为例来尝试通过分析Ajax请求来抓取网页数据的方法.这次要抓取的目标是今日头条的街拍美图,抓取完成之后,将每组图片分文件夹下载到本地并保存下来. 1. 准备工作 在本节开始之前,请确保已经安装好requests库. 2.实战演练 首先,实现方法get_page()来加载单个Ajax请求的结果.其中唯一变化的参数就是offset,所以我们将它当作参数传递,实现如下: import requests from urllib.parse import urlencode def

【Python3网络爬虫开发实战】 分析Ajax爬取今日头条街拍美图

前言本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理.作者:haoxuan10 本节中,我们以今日头条为例来尝试通过分析Ajax请求来抓取网页数据的方法.这次要抓取的目标是今日头条的街拍美图,抓取完成之后,将每组图片分文件夹下载到本地并保存下来. 准备工作在本节开始之前,请确保已经安装好requests库.如果没有安装,可以参考第1章.另外如果你对python的库不是很熟的话,建议先去小编的Python交流.裙 :一久武其而而流

Ajax爬取今日头条街拍美图

1.打开今日头条:https://www.toutiao.com 2.搜索街拍 3.检查元素,查看请求发现在URL中每次只有offset发生改变,是一个get请求 1 import requests 2 from urllib.parse import urlencode 3 import os 4 from hashlib import md5 5 from multiprocessing.pool import Pool 6 7 def get_page(offset): 8 params

分析Ajax爬取今日头条街拍美图

1 import os 2 import requests 3 from urllib.parse import urlencode 4 from hashlib import md5 5 from multiprocessing.pool import Pool 6 7 GROUP_START = 1 8 GROUP_END = 5 9 10 def get_page(offset): 11 params = { 12 'offset': offset, 13 'format': 'json'

用Ajax爬取今日头条图片

Ajax原理 ? 在用requests抓取页面时,得到的结果可能和浏览器中看到的不一样:在浏览器中可以正常显示的页面数据,但用requests得到的结果并没有.这是因为requests获取的都是原始 HTML文档,而浏览器中页面 则是经过Ajax处理数据后生成的.这些数据可能在HTML文档中,也可能是经过JavaScript和特定算法后生成的. ? 刚开始HTML文档中不包含某些数据,当原始页面加载完后,会向服务器发送Ajax请求获取数据,这些数据被JavaScript处理形成一些新页面. ?

用Ajax爬取今日头条图片集

Ajax原理 ? 在用requests抓取页面时,得到的结果可能和浏览器中看到的不一样:在浏览器中可以正常显示的页面数据,但用requests得到的结果并没有.这是因为requests获取的都是原始 HTML文档,而浏览器中页面 则是经过Ajax处理数据后生成的.这些数据可能在HTML文档中,也可能是经过JavaScript和特定算法后生成的. ? 刚开始HTML文档中不包含某些数据,当原始页面加载完后,会向服务器发送Ajax请求获取数据,这些数据被JavaScript处理形成一些新页面. ?

分析Ajax请求并抓取今日头条街拍美图

通常我们从网页上爬取内容时,都是HTML代码,内容都已经写好了,直接从页面获取想要的信息即可,但是有的网页是通过ajax获取的数据,将ajax获取的数据通过json格式接受,然后展示在页面上的,也就是说,当我们打开一个页面时,首先请求的是他的html,然后HTML里面通过ajax获取后端数据,将数据以json格式展示在页面上.而近日头条就是这样.下面我们来看看. 我们打开链接:https://www.toutiao.com/search/?keyword=%E8%A1%97%E6%8B%8D,我

爬取今日头条中的图片

今日头条搜索 :cos. 网址:https://www.toutiao.com/search/?keyword=cos 分析1 在network的doc中的Preview,看到只有一句话,并没有页面的信息,所以判定存在异步加载. 分析2  在XHR中,果然找到相关的json数据.注意,只有key值是 media_creator_id 才会是页面中显示的. 推荐一个chrome上的插件.JSON-handler,可以将json数据显示的更美观. 这便是其效果. 分析3 在data下拿到每个item

今日头条街拍图片爬取

import re import requests import os from urllib import request import json from mysql_tu import mysql_conn headers = { 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36' } for