繁体   English   中英

python的xhr抓取,使用scrapy但没有数据返回

[英]xhr scraping for python, using scrapy but no data return

好的,我在这里之前问过这个问题python 抓取 javascript 不起作用和特定数据

似乎我可以从提取 xhr 内容中获取数据,在这种情况下,我可以有其他替代方法来进行这种抓取而不使用硒。

import scrapy
import json

class PublicMutual(scrapy.Spider):
    name = 'publicmutual'

    headers = {'Accept': '*/*',
    'Accept-Encoding': 'gzip, deflate, br',
    'Accept-Language': 'en-US,en;q=0.9',
    'Connection': 'keep-alive',
    'Cookie': '.ASPXANONYMOUS=u8UpT1xTjt54Tf80JCsS2GqJWf4sPIksbzi5JOaw8TsM7i64n54q8yESMrdk81uj2hjiaMMLSMJAl0LcevRrYNP0XoGlGcGMpgNnmpG6YSMM1jAK0; Analytics_VisitorId=42ce4acb-6501-4828-aa81-74ef126af235; Analytics=SessionId=fc660efe-9e82-4379-afd5-8f77f203ff10&TabId=106&ContentItemId=-1; dnn_IsMobile=False; language=en-US; ASP.NET_SessionId=da1cbmzdgrzitjwntnlu3ioq; __RequestVerificationToken=Ry8wSKybT77XgBmmxuOfGmM4a6_Wy-B1MNKrN5g2zfVB1c6GXlL68ZYWUwZKBvVjyheTWQ2',
    'Host': 'www.publicmutual.com.my',
    'Referer': 'https://www.publicmutual.com.my/Our-Products/UT-Fund-Prices',
    'Sec-Fetch-Dest': 'empty',
    'Sec-Fetch-Mode': 'cors',
    'Sec-Fetch-Site': 'same-origin',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36',
    'X-Requested-With': 'XMLHttpRequest'}


    def start_requests(self):
        yield scrapy.Request(url='https://www.publicmutual.com.my/Our-Products/UT-Fund-Prices',headers= self.headers,callback=self.parse)

    def parse(self, response):
        print(json.loads(response.body))

这是我用作基础的,运行此代码后我根本没有得到任何输出。 我不确定我在这里做错了什么。 请帮忙

好吧,我想我搞定了。 页面中有一个表单通过 xhr (...) 自动发送。 所以我们只是抓住他们的输入来伪造一个有效载荷,这应该可以做到

from bs4 import BeautifulSoup
import requests

url='https://www.publicmutual.com.my/Our-Products/UT-Fund-Prices'
data=requests.get(url).text
soup = BeautifulSoup(data, 'lxml')
inputs=soup.select('input[type="hidden"]')
payload={}
for input_ in inputs:
    if 'name' in input_.attrs and 'value' in input_.attrs:
        payload[input_['name']]=input_['value']

table=requests.post(url, data=payload).text

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM