樱花六分 2021-11-27 19:50 采纳率: 100%
浏览 210
已结题

用python requests.post()实现翻页,表单上传后 返回数据缺失

我在爬取一个国外网站遇到的问题?
他的翻页 是动态加载的 每店家下一页 都会多出一个 infinite 请求 俩都是一样的 只能post 来翻页
不知道为什么我的谷歌浏览器看不到表单formdata

img

不过还好我用抓包工具 fidder上看到了 真是奇怪??

img

然后就用post提交表单想要达到翻页的效果 但是返回的data是无的 跟我想象的不一样??

img

这是代码

import requests ,re,json
from bs4 import BeautifulSoup


header={'Accept':'application/json, text/javascript, */*; q=0.01',
        'Cookie':'PHPSESSID=95gf2q2rglsttoeimvsqb4saar; cb-enabled=enabled; _ga=GA1.2.1766498299.1637376336; _gid=GA1.2.852145304.1637376336; _gat_gtag_UA_11280151_1=1',
        'Hos':'www.aero-mag.com',
        'Referer':'https://www.aero-mag.com/category/news',
        'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36'
        ,'Content-Type':'application/x-www-form-urlencoded; charset=UTF-8',
        'Content-Typ':'application/x-www-form-urlencoded; charset=UTF-8'
        }       

body={  'current_loads':1,
        'page_id':'1049',
        'psas_page_vars[page_id]':1049,
        'loaded_pages[38729][page_id]':38729,
        'loaded_pages[38734][page_id]':38734,
        'loaded_pages[38736][page_id]':38736,
        'loaded_pages[38744][page_id]':38744,
        'loaded_pages[38757][page_id]':38757,
        'loaded_pages[38758][page_id]':38758,
        'loaded_pages[38759][page_id]':38759,
        'loaded_pages[38761][page_id]':38761,
        'loaded_pages[38766][page_id]':38766,
        'loaded_pages[38773][page_id]':38773,
        'loaded_pages[38782][page_id]':38782,
        'loaded_pages[38783][page_id]':38783,
        'block_id':'60c0d24964ef3',
        'psas_page_vars[slug_id]':'category',
        'tab_id':'false',
        'Data':'valuy'}


url='https://www.aero-mag.com/ajax/block/infinite'

data1=requests.post(url,data=json.dumps(body),headers=header,verify=False)

print(data1.url)
print(data1.text)

难道是我表单错误了吗??
我看了一遍没有呀
Content-Typ':'application/x-www-form-urlencoded; charset=UTF-8'
是对应data 的呀 没错误
我只是想要简单的翻页,这给我整不会了,导师不让我用selenium自动化点击 ,说太慢了,看来只能用requests 的post了?或者用别的什么库 scrapy 我还安装错误了目前还没搞懂?

i need help help

  • 写回答

1条回答 默认 最新

  • CSDN专家-HGJ 2021-11-27 20:07
    关注

    1.需要传cookies参数,2.data数据的即字典的值都要写成字符串。获取json后再从中用bs4解析出数据。
    参考如下代码:

    import requests
    
    cookies = {
        'PHPSESSID': 'nvd3sfboq2s3o3dl97pp6s15l6',
        'cb-enabled': 'enabled',
        '_ga': 'GA1.2.774400005.1638014126',
        '_gid': 'GA1.2.940028981.1638014126',
    }
    
    headers = {    
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.55 Safari/537.36 Edg/96.0.1054.34',
        'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
        'Accept': 'application/json, text/javascript, */*; q=0.01',
        'csrftoken': 'd71877461a0e180bf4b60a082c0cbb3abcfec87cfc0d99fdcdf3200ac69af5db',
        'X-Requested-With': 'XMLHttpRequest',    
        'Referer': 'https://www.aero-mag.com/category/news',
        'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',
    }
    
    data = {
        'block_id': '60c0d24964ef3',
        'page_id': '1049',
        'loaded_pages[38773][page_id]': '38773',
        'loaded_pages[38782][page_id]': '38782',
        'loaded_pages[38783][page_id]': '38783',
        'loaded_pages[38785][page_id]': '38785',
        'loaded_pages[38790][page_id]': '38790',
        'loaded_pages[38791][page_id]': '38791',
        'loaded_pages[38794][page_id]': '38794',
        'loaded_pages[38797][page_id]': '38797',
        'loaded_pages[38800][page_id]': '38800',
        'loaded_pages[38801][page_id]': '38801',
        'loaded_pages[38806][page_id]': '38806',
        'loaded_pages[38810][page_id]': '38810',
        'tab_id': 'false',
        'current_loads': '1',
        'psas_page_vars[0]': 'news',
        'psas_page_vars[page_id]': '1049',
        'psas_page_vars[slug_id]': 'category'
    }
    
    response = requests.post('https://www.aero-mag.com/ajax/block/infinite',
                             headers=headers, cookies=cookies, data=data)
    print(response.json())
    
    
    

    如有帮助,请点采纳。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 12月5日
  • 已采纳回答 11月27日
  • 创建了问题 11月27日

悬赏问题

  • ¥20 请问这种量表怎么用spss量化分析(作为中介模型的因变量
  • ¥55 AD844 howland电流源如何驱动大额负载
  • ¥15 C++ /QT 内存权限的判断函数列举
  • ¥15 深度学习GFnet理解问题
  • ¥15 单细胞小提琴堆叠图代码
  • ¥50 升级strust2版本到2.3.15.1后使用ognl3.0.6.jar windows环境中没有问题,但部署到linux环境报错
  • ¥15 vue页面,node封装接口
  • ¥15 求TMS320F280039C工程模板!
  • ¥15 delphi+fastreport实现分组补空打印问题
  • ¥15 使用python把两台mysql数据库服务器数据导出和导入