【发布时间】:2020-12-29 14:02:04
【问题描述】:
我正在尝试刮:
https://id.investing.com/commodities/gold-historical-data
2010-2020 的表格,但问题是默认日期和我选择的日期之间的链接仍然相同。那么如何告诉 python 从 2010 年到 2020 年抓取数据呢?请帮助我,我正在使用 python 3。
这是我的代码:
import requests, bs4
url = 'https://id.investing.com/commodities/gold-historical-data'
headers = {"User-Agent":"Mozilla/5.0"}
response = requests.get(url, headers=headers)
soup = bs4.BeautifulSoup(response.text, 'lxml')
tables = soup.find_all('table')
print(soup)
with open('emasfile.csv','w') as csv:
for row in tables[1].find_all('tr'):
line = ""
for td in row.find_all(['td', 'th']):
line += '"' + td.text + '",'
csv.write(line + '\n')
【问题讨论】:
-
首先检查网络浏览器是如何工作的 - 在您更改日期时,在 Chrome/Firefox 中使用
DevTools(标签Network)查看从浏览器到服务器的所有请求。也许它在 URL 中使用了额外的数据。或者它使用带有额外数据的 POST 请求。或者它使用带有 AJAX 的 JavaScript 来发送发送额外数据的请求 -
您很可能需要使用 post.request 而不是 get。这些链接应该会有所帮助:stackoverflow.com/questions/16390257/… 和 stackoverflow.com/questions/53890493/…
标签: python pandas beautifulsoup screen-scraping