我正在尝试从动态更新的网站(每隔几个小时左右)中提取数据,它是运输服务的网站,并且具有几个页面/选项卡。 到目前为止,无论我尝试什么,我所能做的就是只拉第一页。 所以我不能拉其他标签的数据。 代码:
from bs4 import BeautifulSoup, SoupStrainer
import requests
import pandas as pd
# For establishing connection
proxies = {'http': 'http:...'}
url = 'http://yit.maya-tour.co.il/yit-pass/Drop_Report.aspx?client_code=2660&coordinator_code=2669'
page = requests.get(url, proxies=proxies)
data = page.text
soup = BeautifulSoup(data, "lxml")
for link in soup.find_all('a'):
print(link.get('href'))
html = requests.get(url, proxies=proxies).text
df_list = pd.read_html(html)
df = df_list[1]
df.to_csv('my data.csv')
我也尝试通过解析html源代码来做到这一点,但也只有第一页,有什么想法?
答案 0 :(得分:0)
您应该提取首页的超链接并在代码中使用它(如果没有超链接,则将其他网址放在如下所示的循环中)
import pandas as pd
df_list = []
//call each page here. i assume you have page number at the end of main url
for p in range(1, n):
url = 'http://yit.maya-tour.co.il/yit-pass/Drop_Report.aspx?client_code=2660& coordinator_code=2669?pNumber=%d' %p
df_list.append(pd.read_html(url)[0])
df = pd.concat(df_list)
print(df)
df.to_csv('my data.csv')
答案 1 :(得分:0)
每隔15秒,网页就会调用以下Javasscript代码:
function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}
打开浏览器开发工具,并在此函数中添加一个断点。了解代码所提交的参数后,请使用requests(或其他http客户端)从python代码提交表单。