文章目录
一. urllib.parse.urlencode()和urllib.parse.unquote()
编码工作使用urllib.parse的urlencode()函数,帮我们将key:value这样的键值对转换成"key=value"这样的字符串
解码工作可以使用urllib.parse的unquote()函数。
# IPython3 中的测试结果
In [1]: import urllib.parse
In [2]: word = {
"wd" : "传智播客"}
# 通过urllib.urlencode()方法,将字典键值对按URL编码转换,从而能被web服务器接受。
In [3]: urllib.parse.urlencode(word)
Out[3]: "wd=%E4%BC%A0%E6%99%BA%E6%92%AD%E5%AE%A2"
# 通过urllib.unquote()方法,把 URL编码字符串,转换回原先字符串。
In [4]: print urllib.parse.unquote("wd=%E4%BC%A0%E6%99%BA%E6%92%AD%E5%AE%A2")
wd=传智播客
二. Get方式
一般HTTP请求提交数据,需要编码成 URL编码格式,然后做为url的一部分,或者作为参数传到Request对象中。
GET请求一般用于我们向服务器获取数据,比如说,我们用百度搜索传智播客:https://www.baidu.com/s?wd=传智播客
浏览器的url会跳转成如图所示:

在其中我们可以看到在请求部分里,http://www.baidu.com/s? 之后出现一个长长的字符串,其中就包含我们要查询的关键词传智播客,于是我们可以尝试用默认的Get方式来发送请求。
import urllib.parse
import urllib.request
url = "http://www.baidu.com/s"
word = {
"wd":"传智播客"}
# 转换成url编码格式(字符串)
word = urllib.parse.urlencode(word)
# url首个分隔符就是 ?
newurl = url + "?" + word
headers={
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36"}
request = urllib.request.Request(newurl, headers=headers)
response = urllib.request.urlopen(request)
print (response.read())
三. 批量爬取百度贴吧数据
首先我们创建一个python文件,我们要完成的是,输入一个百度贴吧的地址,比如:
百度贴吧LOL吧第一页:http://tieba.baidu.com/f?kw=lol&ie=utf-8&pn=0
第二页: http://tieba.baidu.com/f?kw=lol&ie=utf-8&pn=50
第三页: http://tieba.baidu.com/f?kw=lol&ie=utf-8&pn=100
发现规律了吧,贴吧中每个页面不同之处,就是url最后的pn的值,其余的都是一样的,我们可以抓住这个规律。简单写一个小爬虫程序,来爬取百度LOL吧的所有网页。
-
步骤一:先写一个main,提示用户输入要爬取的贴吧名,并用urllib.urlencode()进行转码,然后组合url,假设是lol吧,那么组合后的url就是:http://tieba.baidu.com/f?kw=lol
-
步骤二:接下来,我们写一个百度贴吧爬虫接口,我们需要传递3个参数给这个接口, 一个是main里组合的url地址,以及起始页码和终止页码,表示要爬取页码的范围。
-
步骤三:我们已经之前写出一个爬取一个网页的代码。现在,我们可以将它封装成一个小函数loadPage,供我们使用。
-
步骤四:最后如果我们希望将爬取到了每页的信息存储在本地磁盘上,我们可以简单写一个存储文件的接口。
import urllib
from notebook.notebookapp import raw_input
def tiebaSpider(url, beginPage, endPage

本文介绍了Python的urllib库在爬虫中的应用,包括urllib.parse.urlencode()和unquote()的编码解码操作,GET和POST方式的请求,批量爬取百度贴吧数据的方法,以及处理HTTPS请求时的SSL证书验证问题。同时讨论了CA在数字证书认证中的作用。
最低0.47元/天 解锁文章
2456

被折叠的 条评论
为什么被折叠?



