部分异常状态码
URLError与HTTPError
URLError出现原因:
1.连不上服务器
2.远程URL不存在
3.无网络
4.触发了HTTPError
异常处理示例
url ="https://www.douban.com/group/topic/55202938/"
try:
urllib.request.urlopen(url)
except urllib.error.URLError as e:
if hasattr(e,"code"):
print(e.code)
if hasattr(e,"reason"):
print(e.reason)
print("dfdf")
输出
418
dfdf
浏览器伪装技术
原理
用爬虫技术去爬取网站,网站会通过报头来确认终端,如果发现报头不对,不是浏览器,就会禁止访问,所以需要伪造一个报头去欺骗网站。让网站以为自己的终端是浏览器
如果要修改报头,可以用
urllib.request.build_opener()进行
也可以用
urllib.request.Request()下的add_header()实现浏览器报头的模拟
实战
url = "https://www.douban.com/group/topic/55202938/"
# 头文件格式header =(“User-Agent”,具体用户代理值)
headers = ("User-Agent",
"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36")
opener = urllib.request.build_opener()
opener.addheaders = [headers]
data = opener.open(url).read()
fh = open("D:\\pycharmprojects\\untitled\\post.html","wb")
fh.write(data)
fh.close()
print(len(data))
伪造报头后,就可以成功访问网站了