是否可以复制该网站的AJAX调用? (网络抓取问题)

我正试图从这个网站上抓桌子。

尽管我遇到了以下问题,但看起来很简单,可以直接解析HTML。
在每个页面上,前3行与网页上显示的内容不同,后3行不会被抓取。

我做了一些挖掘,发现网站正在从该来源获取数据(这意味着我要抓取的所有数据都不能直接通过网站源代码获得)->  https://www.saasmag.com/wp-admin/admin-ajax.php?action=companydatatable_action&year=2018

在预览XHR请求(在chrome上)时,可以清楚地看到网站在请求什么-尽管当我访问相同的链接时,我只是看到以下内容:{"draw":null,"recordsTotal":0,"recordsFiltered":0,"data":[]}

我认为它受到保护,或者可能需要某种身份验证。

有没有办法解决这种问题?

zzt360997 回答:是否可以复制该网站的AJAX调用? (网络抓取问题)

下面的代码可以解决问题,我只需要使用会话处理程序即可。

import requests

url = r"https://www.saasmag.com/wp-admin/admin-ajax.php?action=companydatatable_action&year=2018"

session = requests.Session()
session.get("https://www.saasmag.com/saas-1000-2018")

formdata = {'draw': ['2'],'columns[0][data]': ['0'],'columns[0][name]': '','columns[0][searchable]': ['true'],'columns[0][orderable]': ['false'],'columns[0][search][value]': '','columns[0][search][regex]': ['false'],'columns[1][data]': ['1'],'columns[1][name]': '','columns[1][searchable]': ['true'],'columns[1][orderable]': ['false'],'columns[1][search][value]': '','columns[1][search][regex]': ['false'],'columns[2][data]': ['2'],'columns[2][name]': '','columns[2][searchable]': ['true'],'columns[2][orderable]': ['false'],'columns[2][search][value]': '','columns[2][search][regex]': ['false'],'columns[3][data]': ['3'],'columns[3][name]': '','columns[3][searchable]': ['true'],'columns[3][orderable]': ['false'],'columns[3][search][value]': '','columns[3][search][regex]': ['false'],'columns[4][data]': ['4'],'columns[4][name]': '','columns[4][searchable]': ['true'],'columns[4][orderable]': ['false'],'columns[4][search][value]': '','columns[4][search][regex]': ['false'],'columns[5][data]': ['5'],'columns[5][name]': '','columns[5][searchable]': ['true'],'columns[5][orderable]': ['false'],'columns[5][search][value]': '','columns[5][search][regex]': ['false'],'columns[6][data]': ['6'],'columns[6][name]': '','columns[6][searchable]': ['true'],'columns[6][orderable]': ['false'],'columns[6][search][value]': '','columns[6][search][regex]': ['false'],'columns[7][data]': ['7'],'columns[7][name]': '','columns[7][searchable]': ['true'],'columns[7][orderable]': ['false'],'columns[7][search][value]': '','columns[7][search][regex]': ['false'],'columns[8][data]': ['8'],'columns[8][name]': '','columns[8][searchable]': ['true'],'columns[8][orderable]': ['false'],'columns[8][search][value]': '','columns[8][search][regex]': ['false'],'columns[9][data]': ['9'],'columns[9][name]': '','columns[9][searchable]': ['true'],'columns[9][orderable]': ['false'],'columns[9][search][value]': '','columns[9][search][regex]': ['false'],'columns[10][data]': ['10'],'columns[10][name]': '','columns[10][searchable]': ['true'],'columns[10][orderable]': ['false'],'columns[10][search][value]': '','columns[10][search][regex]': ['false'],'columns[11][data]': ['11'],'columns[11][name]': '','columns[11][searchable]': ['false'],'columns[11][orderable]': ['false'],'columns[11][search][value]': '','columns[11][search][regex]': ['false'],'order[0][column]': ['11'],'order[0][dir]': ['asc'],'start': ['0'],'length': ['2500'],'search[value]': '','search[regex]': ['false']}

while url:
    headers = {
        "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8","Accept": "application/json,text/javascript,*/*; q=0.01","Accept-Encoding": "gzip,deflate,br","User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:60.0) Gecko/20100101 Firefox/60.0"
    }
    r = session.post(url,headers=headers,data=formdata)
    for company in r.json()['data']:
        print(company)
    url = None
本文链接:https://www.f2er.com/3109475.html

大家都在问