我使用Beauty Soup 4库编写了一个python web scraper,并在raspberry pi 0上运行它。我从mlb.com/<insert a team name>/scores
获取数据,例如mlb.com/padres/scores
或mlb.com/cubs/scores
。当比赛安排、进行中或结束时,这些网站看起来略有不同。我的程序是在游戏进行时使用的
我面临的问题是,当我试图在一个循环中运行程序以在游戏进行过程中不断获取信息时(理想情况下,我的程序会捕捉到每一次投球更新),我的网络刮板无法跟上。似乎web scraper每3-4分钟抓取一次HTML,然后如果我继续运行它,它会从某个缓存中获取数据。当我刷新桌面上的页面时,我可以看到页面已更新。但是,当程序在我的Raspberry pi 0上运行时,大约3-4分钟内都看不到页面的更新
例如,当我在我的rpi上运行脚本时,它将捕获游戏中的一个瞬间。2出局、1球、2击等。在我的桌面浏览器上查看时,游戏将继续,网页将更新。2出局,2球,2击。。。。。2次出局,3个球,2次击球。。。等,但如果我继续在我的rpi上运行脚本,它仍然会看到/显示2出局,1球,2击,这与我在桌面上看到的不匹配。大约3-4分钟后,我的rpi将更新,并再次匹配我在桌面上看到的内容
如果有必要,我可以发布代码,但我倾向于这样做,因为我不了解BS4库是如何工作的。我会同时阅读文档,但希望有人知道我的问题。谢谢
from urllib.request import urlopen as uReq
from bs4 import BeautifulSoup as soup
# Set the URL you want to webscrape from
url = 'https://www.mlb.com/astros/scores'
while again:
# Connect to the URL
uClient = uReq(url)
page_html = uClient.read()
uClient.close()
#set html parsing
page_soup = soup(page_html,"html.parser")
data = page_soup.find('div',{'data-test-mlb':'singleGameContainer'})
beautifulsoup从HTML中提取信息,但它本身并不执行请求。如果您已在驱动器上以html格式保存了网页,并且始终使用beautifulsoup对其进行解析,则该网页将永远不会更新。您必须使用
requests.get
或同等工具再次获取您的网页例如:
上面的代码提供了以下输出:
因此网页正在正确更新
但是,有一件事可能是错误的根源,那就是使用
BeautifulSoup.find
here,这会将输出限制为仅一个结果。我猜这是故意的,但如果不是,你可能有你的问题就在那里相关问题 更多 >
编程相关推荐