【问题标题】:scraping table data based on date根据日期抓取表格数据
【发布时间】:2021-03-06 18:57:58
【问题描述】:

我正在尝试抓取 kurs 交易表https://www.bi.go.id/id/moneter/informasi-kurs/transaksi-bi/Default.aspx

从 2015 年到 2020 年,但问题是默认日期和我选择的日期之间的链接仍然相同。那么我如何告诉 python 从 2015-2020(20-Nov-15 -- 20-nov-20)抓取数据?我对 python 很陌生,正在使用 python 3。提前谢谢你

import requests
from bs4 import BeautifulSoup
import pandas as pd
headers={
"User-Agent":"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.101 Safari/537.36",
"X-Requested-With":"XMLHttpRequest"
}
url = "https://www.bi.go.id/id/moneter/informasi-kurs/transaksi-bi/Default.aspx"
import requests
from lxml import html
response = requests.get(url)
content= response.content
print(content)

【问题讨论】:

  • the link between the default date and the date that I chose is still the same - adinda 的意思是 url 不会改变以反映查询的日期范围,这意味着 bs4 不能用于直接访问所需的页面。

标签: python web-scraping beautifulsoup screen-scraping


【解决方案1】:

几种不同的方法:

  • 如果您使用一维数据,请使用数组切片
  • 将数据放入数据框后,使用 Pandas 库中的 filter/groupby 方法

【讨论】:

    【解决方案2】:

    该网站要求您输入查询的开始日期和结束日期。但是,据我所知,bs4 只会抓取浏览器上已经显示的 html,对于在网站本身上进行查询并没有太大用处。

    从源代码和 POST 请求来看,它看起来像是一个复杂的请求,因此您最好模拟鼠标点击。

    这可以使用自动化浏览器测试selenium 包来自动打开 Google Chrome 浏览器,在 From 和 To 字段中输入日期,然后单击 Lihat 按钮,等待页面加载,然后抓取显示的表格使用bs4selenium

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-21
      • 2020-11-26
      • 2013-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多