python - Python BeautifulSoup 用过滤器抓取网站
问题描述
我试图抓取https://www.forexfactory.com/calendar?day=today。我的代码是
table = soup.find_all("tr",{"class":"calendar_row"})
forcal = []
for item in table:
dict = {}
dict["Currency"] = item.find_all("td", {"class":"calendar__currency"})[0].text.strip() #Currency
dict["Event"] = item.find_all("td",{"class":"calendar__event"})[0].text.strip() #Event Name
dict["Time_Eastern"] = item.find_all("td", {"class":"calendar__time"})[0].text #Time Eastern
impact = item.find_all("td", {"class":"impact"})
for icon in range(0,len(impact)):
dict["Impact"] = impact[icon].find_all("span")[0]['title'].split(' ', 1)[0]
dict["Actual"] = item.find_all("td", {"class":"calendar__actual"})[0].text #Actual Value
dict["Forecast"] = item.find_all("td", {"class":"calendar__forecast"})[0].text #forecasted Value
dict["Previous"] = item.find_all("td", {"class":"calendar__previous"})[0].text # Previous
forcal.append(dict)
我能够抓取所有数据。但是我如何仅过滤美元货币?目前它正在刮掉所有货币。
谢谢你。
解决方案
您可以在将值分配给字典之前添加 if 语句:
Currency = item.find_all("td", {"class":"calendar__currency"})[0].text.strip() #Currency
if Currency == "USD":
dict["Currency"] = Currency
dict["Event"] = item.find_all("td",{"class":"calendar__event"})[0].text.strip()
...
推荐阅读
- python - 为什么 scipy 的 splrep 在输入数据上显示错误?
- c# - System.ArgumentException:ORA-22062:输入字符串无效 [161.252.2.150]
- jsf - 如何在jsf中使用selectOneMenu,对象的值不是String?
- c# - 将 OpenGL 4.5 代码降级到 OpenGL 3.0
- javascript - 如何使用reduce删除对象数组中的空值?
- android - 在同一应用程序(Android)中为移动/桌面和电视上传多个 APK。Google Play 开发者控制台无法正常工作
- .net - 将 utc 格式 DateTime 字符串转换为日期时间时出现异常
- c++ - 使用 C++ 写入 JSON 文件?
- computer-vision - 如何将 LSTM 输出反馈到 pytorch 数据加载器中的输入
- python - PDFMiner Version diffs?Getting UnsupportedOperation: seek