长话短说,我一直没有解决任何问题,最终经过多年的潜伏,我开始在stackoverflow上注册自己:)
我正试图从AccuWeather或任何其他站点获取天气值,但我不断收到此错误:
回溯(最近一次拨打电话):文件“ weather.py”,第9行,在 request = urllib2.Request(site,headers = headers)NameError:名称“ urllib2”未定义
我正在学习python,所以如果这是我在浪费您时间的基本问题,请原谅。
这是我的代码:
# import libraries
from urllib2 import urlopen, Request, HTTPError
from bs4 import BeautifulSoup
headers = {"Accept-Language": "en-US,en;q=0.5", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:40.0) Gecko/20100101 Firefox/40.0"}
# specify the url
site = "https://www.accuweather.com/en/aq/mcmurdo-station/2273718/current-weather/2273718"
request = urllib2.Request(site, headers=headers)
page = urllib2.urlopen(req)
content = page.read()
# parse the html using beautiful soup and store in variable soup
soup = BeautifulSoup(page, 'html.parser')
# Take out the <div> of name and get its value
temp = soup.find('div', attrs={'class': 'h2'})
print temp
谢谢!
答案 0 :(得分:3)
from urllib2 import urlopen, Request, HTTPError
这里是从urllib2库导入的,这意味着在调用导入的模块之一时不引用urllib2。所以代替:
request = urllib2.Request(site, headers=headers)
那将是:
request = Request(site, headers=headers)
要更多地钻探该房屋,因为我以前也对此感到困惑,因此您已经使用bs4 import BeautifulSoup进行了完全相同的操作。请注意,您如何不调用bs4.BeautifulSoup,而仅调用BeautifulSoup。
page = urllib2.urlopen(req)
您在此处再次执行此操作,并且您还将传递“ req”而不是刚刚创建的“ request”对象。
最后,如果您已解决此问题,则可能由于以下原因而无输出:
temp = soup.find('div', attrs={'class': 'h2'})
您要的是'h2'类的'div'。 h2本身就是HTML元素,而不是类属性,除非它是一个非常时髦的网站。
祝您的项目好运!