Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中生成动态ajax请求_Python_Ajax_Web Scraping_Python Requests - Fatal编程技术网

在Python中生成动态ajax请求

在Python中生成动态ajax请求,python,ajax,web-scraping,python-requests,Python,Ajax,Web Scraping,Python Requests,这听起来可能是一个愚蠢的问题,但我被困在这一步,急需帮助。因此,我正试图刮这一页[这里][1]。此页面生成一个AJAX请求,其标题如下: { :authority: www.trip.com :method: POST :path: /restapi/soa2/16709/json/rateplan?testab=f14a7b98f0e497fd586c2946707d076a563a3d1d457219aa731e1cc518fe9df2 :scheme: https accept: appl

这听起来可能是一个愚蠢的问题,但我被困在这一步,急需帮助。因此,我正试图刮这一页[这里][1]。此页面生成一个AJAX请求,其标题如下:

{
:authority: www.trip.com
:method: POST
:path: /restapi/soa2/16709/json/rateplan?testab=f14a7b98f0e497fd586c2946707d076a563a3d1d457219aa731e1cc518fe9df2
:scheme: https
accept: application/json
accept-encoding: gzip, deflate, br
accept-language: en-GB,en-US;q=0.9,en;q=0.8
cache-control: no-cache
content-length: 1661
content-type: application/json
}
在键“path”的此标头中,动态生成“testab”的值。现在,我希望只使用请求方法而不是打开浏览器来获取该值。因此,当我使用请求模块导航到此url时,我希望能够动态捕获“testab”的值。如果有人能给我一个解决方案,那将是一个很大的帮助。提前谢谢。我也不能用scrapy来做这个用途


[1]: https://www.trip.com/hotels/mumbai-hotel-detail-762871/grand-hyatt-mumbai/?checkIn=2020-09-14&checkOut=2020-09-15&cityId=724&children=2&children=0&crn=1&travelpurpose=0&curr=USD&showtotalamt=0&hoteluniquekey=H4SIAAAAAAAAAAAAAAAAOPAYK8FK8FK8B8GgiwBilFJNYFJL7U12IY9DECZNZQWMHGCRNFS44JAWGCAAHDWBKWHKWHKWH0ECYXSN=0ECYXSNKCEEF3OAIC6ABVN5ORBJ5XR-U SRYJB-P663GPFZ63GPFXIYY5LDDkamE4x-C5j-PNNDVIUJLEM1UWTISA9SVCC5RQTWYUMHLTMDI-YGF4XXIXYVGFDHEZDFCJGAJJUJPDIMYGIRAQG6UUJJJJJ0NE00TZYZMTSW00B0QPLJYPKXUKKKKKKIUAW5ARDG16GPV1ingKYPRJKKJKKJKUJJJJJJJJJJJJ9YKK0KOQYKYKYKYJJJ2JJJJJJJJ2J2JJJJ2JJJJJ2YNTVPNYNYNYNYNY2L4L4L4L4L4LMX1LAWMXI4J4J4J4J4J4J4J4J4J4J4J4J4Y4Y

使用pip并执行
pip安装pycurl

然后您的代码看起来像这样(我从文档中复制了代码)


但是,我建议使用,因为执行请求只会获取html,而不会加载动态内容,那么您还必须找到如何解析数据。

要实现这一点,您可以使用
curl

使用pip并执行
pip安装pycurl

然后您的代码看起来像这样(我从文档中复制了代码)


但是,我建议使用,因为执行请求只会获取html,而不会加载动态内容,因此您还必须找到如何解析数据。

您可以使用BeautifulSoup删除正在查找的变量,然后将其用于请求。您可以使用BeautifulSoup删除正在查找的变量,然后然后将它们用于您的请求。
import pycurl
from StringIO import StringIO

buffer = StringIO()
c = pycurl.Curl()
c.setopt(c.URL, 'http://pycurl.io/')
c.setopt(c.WRITEDATA, buffer)
c.perform()
c.close()

body = buffer.getvalue()
# Body is a string in some encoding.
# In Python 2, we can print it without knowing what the encoding is.
print(body)