爬虫第二课---urllib

版权声明:只要点赞,这篇文章就是你的。 https://blog.csdn.net/weixin_36691991/article/details/89010811
import urllib.request

'''
普通请求,不设置headers
'''
# url = 'http://httpbin.org/get'#或post
# #urlopen    发起请求
# # req = urllib.request.urlopen(url)#get
# req = urllib.request.urlopen(url,data='username=huo'.encode(),timeout=2)#参数data就是post请求,timeout设置超时
# print(req.read().decode())

'''
设置headers
'''
urls = 'https://www.jianshu.com'
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36"
}
req = urllib.request.Request(urls,headers=headers)
r = urllib.request.urlopen(req)
print(r.read().decode())
​
import urllib.request
from http import cookiejar
#创建一个cookie对象
cookie = cookiejar.CookieJar()
filename = 'cookie.txt'
# cookie = cookiejar.MozillaCookieJar(filename)
#创建一个cookie处理器
cookies = urllib.request.HTTPCookieProcessor(cookie)
#创建一个opener对象
opener = urllib.request.build_opener(cookies)

res = opener.open('http://www.baidu.com')

print(res.read().decode())

​
import urllib.request
proxy = {
    'http':'101.4.136.34:80',
    'https':'101.4.136.34:80'
}
#创建一个代理处理器
proxies = urllib.request.ProxyHandler(proxy)

opener = urllib.request.build_opener(proxies,urllib.request.HTTPHandler)

req = opener.open('http://httpbin.org/ip')

print(req.read().decode())

import urllib.parse

url = 'https://www.baidu.com/s?wd=%E9%98%BF%E5%B8%83%E4%BA%91'
url = urllib.parse.unquote(url)
#ascii转中文
print(url)
#转成ascii
print(urllib.parse.quote(url))

#拼接参数
data = {
    'user':'礼拜',
    'password':'123'
}
print(urllib.parse.urlencode(data))
from urllib import request,error
try:
    res = request.urlopen('https://www.jianshu.com')
except error.URLError as e:
    print(e.reason)
    print(e.headers)
    print(e.code)

接下来,就上面的代码,我们聊聊这个,说一句题外话,我们所有的爬虫基础都是基于socket的,所以,看到这里的朋友,如果不懂socket,请上看一课。

urllib是python的标准库,所以呢,它用起来比较繁琐,不是太简便。首先说第一段代码。因为这是一个标准库,所以不需要用pip安装。直接import使用。这里有一个测试爬虫或者说是学习爬虫的一个网址--http://httpbin.org。这个是很强大的。不会的可以百度一下哈。

我们就用这个网址来测试。先测试get方法。只需要在这个网址后面加上get就可以了。然后我们用urlopen请求网址,返回的是一个HTTPResponse对象。这里面有很多方法和属性。可以用dir或者官方文档查看。请求结束后,我们可以用read()方法来看请求到的内容。可以发现这个一个二进制的数据。当然我们也可以把它转成utf8的形式。看代码哈。

我们在请求的时候,可以发现会话记录,也就是cookie,这个时候我们就得处理cookie。python的开发者也想到了这个问。所以呢,我们只需要引入http中的cookiejar包就可以了。然后就像代码的注释那样的说法,这里就不啰嗦了。

第三段代码是代理,和cookie是一个意思。

第四个代码是url的处理。这个用的比较多(老师说的)。所以呢,这里的划重点了哈。

https://www.baidu.com/s?wd=%E9%98%BF%E5%B8%83%E4%BA%91

上面这个url是百度的。我们复制url,然后粘贴到代码中,就会发现wd后面的中文发生了变化,变成了ASCII。所以我们就用到了

unquote,这个是ascii转中文,quote是中文转ascii,有时候请求我们的把参数转换一下。

第五段代码就是错误处理,为了我们代码的健壮,所以最好是精确匹配错误。然后处理错误。这个是urllib中的包,顺便了解一下。

扫描二维码关注公众号,回复: 5782425 查看本文章

猜你喜欢

转载自blog.csdn.net/weixin_36691991/article/details/89010811
今日推荐