如何使用 Python 阅读没有 .htm* 扩展名的网页?
How to read webpages that are without .htm* extension using Python?
我经常使用 urllib2 库来解析 python 中的网页。
通常,URL 的格式为:
page_url = 'http://www.website.com/webpage.html'
我用这个来解析页面:
import urllib2
def read_page_contents(url):
try:
request = urllib2.Request(url)
handle = urllib2.urlopen(request)
content = handle.read()
except:
# aded as suggested by contributers below:
import traceback
traceback.print_exc()
content = None
return content
page = read_page_contents(page_url)
if page is not None:
# start dealing with page contents
pass
这没有问题,但是当我尝试一个没有 html 扩展名的 URL 时,如下所示,
page_url = 'https://energyplus.net/weather-region/north_and_central_america_wmo_region_4'
此方法失败读取页面,它总是returnsNone!和一条错误消息
raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
HTTPError: HTTP Error 403: Forbidden:
我搜索了 Whosebug,但是,根据我的关键字,我没有找到任何有用的东西!
请帮我解决这个问题。
提前致谢
------------
我找到了答案,感谢以下 2 位贡献者的帮助:
导入请求
def read_page_contents(url):
try:
request = requests.get(url)
content = request.content
except:
# aded as suggested by contributers below:
import traceback
traceback.print_exc()
content = None
return content
这与您的 url 中没有 .html 无关。您的代码本身相当混乱。一个位置有 page_url,另一个位置有 continent_url。所以你将无法执行这段代码。我假设这是一个复制粘贴问题。你的代码中真正的错误是这个
except:
content = None
永远不要这样做。如果你有一个通用的捕获所有异常,你绝对必须记录
except:
import traceback
traceback.print_exc()
content = None
您将看到您尝试检索的页面存在真正的问题(最终证明是权限问题)。
使用 requests 并节省您的时间来做更有意义的事情。
import requests
url = 'https://energyplus.net/weather-region/north_and_central_america_wmo_region_4'
r = requests.get(url)
输出:
r.status_code: 200
我经常使用 urllib2 库来解析 python 中的网页。 通常,URL 的格式为:
page_url = 'http://www.website.com/webpage.html'
我用这个来解析页面:
import urllib2
def read_page_contents(url):
try:
request = urllib2.Request(url)
handle = urllib2.urlopen(request)
content = handle.read()
except:
# aded as suggested by contributers below:
import traceback
traceback.print_exc()
content = None
return content
page = read_page_contents(page_url)
if page is not None:
# start dealing with page contents
pass
这没有问题,但是当我尝试一个没有 html 扩展名的 URL 时,如下所示, page_url = 'https://energyplus.net/weather-region/north_and_central_america_wmo_region_4'
此方法失败读取页面,它总是returnsNone!和一条错误消息
raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
HTTPError: HTTP Error 403: Forbidden:
我搜索了 Whosebug,但是,根据我的关键字,我没有找到任何有用的东西!
请帮我解决这个问题。
提前致谢
------------
我找到了答案,感谢以下 2 位贡献者的帮助:
导入请求
def read_page_contents(url):
try:
request = requests.get(url)
content = request.content
except:
# aded as suggested by contributers below:
import traceback
traceback.print_exc()
content = None
return content
这与您的 url 中没有 .html 无关。您的代码本身相当混乱。一个位置有 page_url,另一个位置有 continent_url。所以你将无法执行这段代码。我假设这是一个复制粘贴问题。你的代码中真正的错误是这个
except:
content = None
永远不要这样做。如果你有一个通用的捕获所有异常,你绝对必须记录
except:
import traceback
traceback.print_exc()
content = None
您将看到您尝试检索的页面存在真正的问题(最终证明是权限问题)。
使用 requests 并节省您的时间来做更有意义的事情。
import requests
url = 'https://energyplus.net/weather-region/north_and_central_america_wmo_region_4'
r = requests.get(url)
输出:
r.status_code: 200