python - 无法以所需的方式从网页中获取两个字段
问题描述
我在 python 中创建了一个脚本来获取两个字段(第 2 列和第 3 列)time
并currency
从位于网页中的表中获取。该脚本正在获取结果,但不是我希望的方式。
到目前为止,我已经写过:
import requests
from bs4 import BeautifulSoup
URL = "https://www.forexfactory.com/calendar.php?week=this"
res = requests.get(URL)
soup = BeautifulSoup(res.text,"lxml")
for item in soup.select("tr.calendar_row"):
ftime = item.select_one("td.calendar__time").get_text(strip=True)
currency = item.select_one("td.calendar__currency").get_text(strip=True)
print(ftime,currency)
我得到的结果:
All Day JPY
5:00am CNY
CNY
2:00pm USD
1:59am JPY
2:00am EUR
EUR
4:30am GBP
GBP
GBP
预期成绩:
All Day JPY
3:00pm CNY
3:00pm CNY
2:00pm USD
1:59am JPY
12:00pm EUR
12:00pm EUR
2:30pm GBP
2:30pm GBP
2:30pm GBP
我得到的时间与那个网站不同。此外,我希望用其较早的值填充空白时间。
如何修改现有脚本以获取上面显示的结果?
解决方案
问题是时间列中的空单元格
import requests
from bs4 import BeautifulSoup
URL = "https://www.forexfactory.com/calendar.php?week=this"
# Make cookie dictionary for setting timezones
cookies={
"fftimezoneoffset":"0", #timezone / UTC +/-X
"fftimeformat":"1", # format 0=am/pm / 1=24hour format
"ffdstonoff":"1", # daylight saving
"ffverifytimes":"1" # set times to timezone
}
res = requests.get(URL,cookies=cookies) # apply timezones
soup = BeautifulSoup(res.text,"lxml")
lastTime = "" #lastTime for cases with empty values for times
for item in soup.select("tr.calendar_row"):
ftime = item.select_one("td.calendar__time").get_text(strip=True)
if len(ftime) == 0: #if empty time use last one
ftime = lastTime
lastTime = ftime
currency = item.select_one("td.calendar__currency").get_text(strip=True)
if len(currency) > 0: # print if there is currenty
print(ftime,currency)
推荐阅读
- equalsverifier - 如何更改构造函数参数?
- django - 使用 docker 和 nginx 运行多个 django 项目
- react-native - TypeError:null 不是反应原生的对象(评估'_this.scrollView.scrollTo')
- angular - 无法使用 Video.JS 为 mp4 视频呈现嵌入式字幕
- javascript - 每 1 秒请求一次 HTTP 并使用来自响应的传入对象更新状态会延迟应用程序
- cplex - CPLEX 约束
- mongodb - 阻止猫鼬将字符串解释为(十六进制)数字
- python - 将值插入到单元格中,结果由 pandas 分组
- configuration - Acosix / alfresco-simple-content-stores:自定义类型的 TypeRoutingStore Null 错误
- python - 在 Jupyter 中检索分页 API 异步和 httpaio