我是 Python 新手,我正在尝试从 The Weather Network 获取温度,但是我没有收到任何温度值。有人可以帮我解决这个问题,因为我已经坚持了一段时间吗? :(先谢谢你!
import time
import schedule
import requests
from bs4 import BeautifulSoup
def FindTemp ():
myurl = "https://www.theweathernetwork.com/ca/36-hour-weather-forecast/ontario/toronto"
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36'
}
r = requests.get(myurl, headers = headers)
c = r.content
soup = BeautifulSoup(c,"html.parser")
all = soup.find("div",{"class":"obs-area"}).find("span",{'class': 'temp'})
todaydate = time.asctime()
TorontoTemp = all.text
print("The temperature in Toronto is" ,TorontoTemp, "on", todaydate)
print(TorontoTemp)
print(FindTemp())
答案 0 :(得分:1)
即使您没有做错任何事情,它也完全不必工作。许多站点使用 Javascript 来获取数据,因此您需要使用其他一些内置 Chromium 的抓取工具,并使用与您亲自与站点交互时会看到的相同 DOM。许多拥有重要数据(例如天气数据)的网站会主动保护自己免遭抓取,因为它们提供的数据具有货币价值(即您可以购买数据提要访问权限)。
无论如何,您应该从一些众所周知的抓取良好的网站开始。 Beautifulsoup 自己的网页是一个好的开始:)
并且您应该使用调试器来查看您的代码生成的中间值,并调查它们与您的期望不同的地方。