urllib.request.ProxyHandler({'http':'http://fsdfffs.com','https':'https://fsdfwe.com'})
这样就可以避免同一个IP访问网站多次被封的尴尬局面了 。
import urllib.request
proxy_handler = urllib.request.ProxyHandler({
'http': 'http://127.0.0.1:8000',
'https': 'https://127.0.0.1:8000'
})
opener = urllib.request.build_opener(proxy_handler) #构建代理池
response = opener.open('https://book.qidian.com/info/1014243481#Catalog') #代理访问网站
print(response.read)
文章插图
可以看出,由于本人使用无用的IP导致链接错误,所以此时应该处理异常 。
文章插图
换了种处理异常的方式,不过总的来说还是比较全面的 。异常模块中有两个异常错误:
URLError,HTTPError,其中HTTPError是URLError的子类,URLError 里只有一个属性:reason,即抓异常的时候只能打印错误信息,类似上面的例子 。
HTTPError 里有三个属性:code,reason,headers,即抓异常的时候可以获得code,reson,headers三个信息,
import socket
import urllib.request
import urllib.error
aa=''
try:
response = urllib.request.urlopen('https://book.qidian.com/info/1014243481#Catalog', timeout=0.1)
aa=response.read.decode('utf8')
except urllib.error.URLError as e:
print(e.reason)
if isinstance(e.reason,socket.timeout):
print("time out")
except urllib.error.HTTPError as e:
print(e.reason,e.code)
finally:
print(aa)
除此之外,它还可以处理cookie数据,不过要借助另一个模块 http 。import http.cookiejar, urllib.request
cookie = http.cookiejar.CookieJar #创建cookiejar对象
handler = urllib.request.HTTPCookieProcessor(cookie) 建立cookie请求
opener = urllib.request.build_opener(handler) #构建请求
response = opener.open('https://www.baidu.com') #发送请求
for item in cookie:
print(item.name+"="+item.value) #打印cookie信息
同时cookie可以写入到文件中保存,有两种方式http.cookiejar.MozillaCookieJar和http.cookiejar.LWPCookieJar,想用哪种自己决定 。http.cookiejar.MozillaCookieJar方式
import http.cookiejar, urllib.request
filename = "cookie.txt"
cookie = http.cookiejar.MozillaCookieJar(file_name)
handler = urllib.request.HTTPCookieProcessor(cookie)
opener = urllib.request.build_opener(handler)
response = opener.open('https://www.baidu.com')
cookie.save(ignore_discard=True, ignore_expires=True)#保存信息
http.cookiejar.LWPCookieJar方式import http.cookiejar, urllib.request
filename = 'cookie.txt'
cookie = http.cookiejar.LWPCookieJar(file_name)
handler = urllib.request.HTTPCookieProcessor(cookie)
opener = urllib.request.build_opener(handler)
response = opener.open('https://www.baidu.com')
cookie.save(ignore_discard=True, ignore_expires=True)
如果想要通过获取文件中的cookie获取的话可以通过load方式,它也有两种方式,http.cookiejar.MozillaCookieJar和http.cookiejar.LWPCookieJar,想用哪种自己决定 。http.cookiejar.MozillaCookieJar方式
import http.cookiejar, urllib.request
cookie = http.cookiejar.MozillaCookieJar
cookie.load('cookie.txt', ignore_discard=True, ignore_expires=True)
handler = urllib.request.HTTPCookieProcessor(cookie)
opener = urllib.request.build_opener(handler)
response = opener.open('https://www.baidu.com')
print(response.read.decode('utf-8'))
http.cookiejar.LWPCookieJar方式import http.cookiejar, urllib.request
cookie = http.cookiejar.LWPCookieJar
cookie.load('cookie.txt', ignore_discard=True, ignore_expires=True)
handler = urllib.request.HTTPCookieProcessor(cookie)
opener = urllib.request.build_opener(handler)
response = opener.open('https://www.baidu.com')
print(response.read.decode('utf-8'))
urllib parse模块它是负责解析页面内容,模块下有一个urlparse方法用于拆分解析内容,具体用法如下:
urllib.parse.urlparse(url,scheme)
URL:页面地址scheme: 协议类型,比如 http https
推荐阅读
- JDK里面自带了这么多的exe,你都挨着试过么?
- Python流程控制语句详解
- Python线程的生命周期你知道多少,一文帮你全部搞清楚
- 使用Python+Fabric实现Linux自动化操作
- Python循环语句代码详解:while、for、break
- 凭借这5步,我30分钟学会了Python爬虫
- 真香!Python十大常用文件操作,轻松办公
- 别再用手敲了,这个工具可以自动生成python爬虫代码
- 盒马可以加工自带海鲜吗 盒马现场买了海鲜如何加工
- 使用python爬取抖音app视频