无法从网站获取数据,因为 URL 在抓取数据时不会更改,因此数据表为空



我刚开始使用Python进行Webscrap。我使用了两个图书馆来刮擦:请求和美丽的汤。我打开给定的URL,在该页面上,我通过了我想要数据的日期间隔。当我按提交时,URL不会更改,但是数据在页面上存在。然后,我可以访问该页面。这就是我可以访问网站的方式:

r = requests.get("https://....... ")
c = r.content
soup = BeautifulSoup(c, "html.parser")

如果我想获取数据,我会使用以下代码从存储数据的网站获取数据:

all = soup.find_all("table", {"class":"table table-responsive table-data"})

我的所有变量都是一个空列表,而在网站上我可以看到数据存在。

我知道为什么会发生这个问题。当我打开URL时,网站要求我提交一些参数,即在我的情况下,然后按提交提交时,我会获取数据,但URL不会更改。

有什么办法也可以使用请求或美丽的汤提交参数?或其他任何可以克服此问题的软件包?

如果您可以使用请求的参数。如果它的硬核身份验证更好地使用硒。

段传递URL中的部分应清除 - http://docs.python-requests.org/en/master/user/quickstart/

get

payload = {'key1': 'value1', 'key2': 'value2'}
r = requests.get('http://httpbin.org/get', params=payload)

post

payload = {'key1': 'value1', 'key2': 'value2'}
r = requests.post("http://httpbin.org/post", data=payload)

我没有经验丰富,但是我认为该页面中会有一个ajax呼叫,您必须查看其发送呼叫的url,然后响应Ajax,Ajax填充了您的数据需要。

美丽的汤不支持发布请求,因此您需要为此使用另一个库。

我建议请求库。

然后您可以做这样的事情(这只是一个示例,您必须适应您的需求):

import requests
import BeautifulSoup
formData = {'date_1':'1111111', 'date_2': '111111'}
request = requests.post('https://...', data = formData)
soup = BeautifulSoup(request.content)
all = soup.find_all("table", {"class":"table table-responsive table-data"})

最新更新