这节课从request库开始将起,开始之前我们讲一下headers,headers代表一个网站的请求头,目前为了防止某些网站对请求进行禁止,我们一般在对网址url发起请求的时候加上请求头headers。那么请求头在哪里找呢?
下面看请求网页的代码
from urllib import request
#在这里我们导入headers,注意是字典格式{}
headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.60 Safari/537.36'}
url='https://www.liepin.com/zhaopin/?key=python¤tPage=0'
#url我们选择的是猎聘网关键字为python的网址
rq=request.Request(url,headers=headers)
print(rq)
#这里面的输出就可以看出来rq的类型,属于request.Request
resp=request.urlopen(rq)
print(resp.head(10))
#这里表示读取网页源代码的前十行
这里我们用猫眼专业版做一下简单的实战练习!
首先我们找到猫眼专业版实时票房的url,然后按照以上的方法进行查找到headers。
from urllib import request
url='https://piaofang.maoyan.com/dashboard'
headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.60 Safari/537.36'}
rq=request.Ruquest(url,headers=headers)
resp=request.urlopen(rq)
print(resp.read().decode('utf-8'))
#后面表示对网页内容进行解码成utf-8
下面我们介绍更换ip
每一个ip我理解的就是电脑的名字,相当于一个人的名字,有的时候我们在爬取网页源码时候,由于目标网站设置所以就会禁止掉你的ip,所以我们要学会对ip的更换。
首先我们使用http://httpbin.org/ip来查看自己的ip地址。
然后我们这里以快代理为例,百度上搜索快代理。然后进入到了免费代理界面我们可以看到
在这里我们可以看到ip 以及对应的端口号也就是post
这就是我们目前所需要的。后期如果我们要做爬虫任务,可以购买一些ip,这些免费的ip不太稳定,但是对于基础入门足够了
from urllib import request
url='http://httpbin.org/ip'
resp=request.urlopen(url)
#这里我们先查看自己电脑的ip
print(resp.read())
handle=request.ProxyHandler({'http':'120.220.220.95:8085'})
#这里我们导入了一个免费ip,然后使用这个进行替换
opener=request.build_opener(handle)
resp=opener.open(url)
print(resp.read())
#运行之后我们发现两次访问的ip截然不同。这里我们就达到了目的
cookie介绍
有的时候我们使用headers也不能进行访问,这里我们就有介绍一个叫做cookie,对于cookie,具体操作也比较简单。那么cookie在哪里呢,这里我们以知乎为例,首先找到知乎的url。
这里我们依旧按照先前的方式进行查看,在这里我们就可以找到我们想要的cookie
from urllib import request
url='https://www.zhihu.com/'
headers={'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.60 Safari/537.36',
'cookie':'_xsrf=YgA1qlcOBMzCrVXld37kFXaZqIUFIARv; _zap=4276bfe9-a042-4a9c-a971-70157caebaa2; Hm_lvt_98beee57fd2ef70ccdd5ca52b9740c49=1651649188; d_c0="AABQVE2R4xSPTueM1R-D1TXOMiDFzr68TKk=|1651649185"; captcha_session_v2=2|1:0|10:1651649185|18:captcha_session_v2|88:QjFBeG5zQ1BYNnZyVEp5bDlhcnd5c3JLNVJ2c255eWZucjdNQ1FrRWtPNTVUZlVkbitqemNHMFgyV2dLaXl0OA==|cfa668d370f0b3c492488963e2cff70966cc9d63c38c4e8ba33366596ac0a508; SESSIONID=HkNuVwtM1WqKdd8Im7pLR0XwcPyv2gG2sKdgVnSgI5O; JOID=U10cC050TqJV9fxYG3zuOpW0ZLsHOCntLaePIFdBHd8fnJxkXt5p3D719FUXxf3KaFRPnB_dmHUFM3cuE8Gk4nE=; osd=VF8UAE9zTKpe9PtaE3fvPZe8b7oAOiHmLKCNKFxAGt0Xl51jXNZi3Tn3_F4Wwv_CY1VInhfWmXIHO3wvFMOs6XA=; __snaker__id=WOhl6SmYzfptH4dr; gdxidpyhxdE=3swHy0wBaKxGng2lTOtCTfr1JT6prrpiq6xu0VTktDOZLV8L9yKTBlet9QfzN7yZTbByloc5d%2BcWfTTe1aZ9O6L4zTaSJGgqTDBueaquwNEpLYHVPoWa2SdMbo8m6alNgIOVkRGYJsTEpSuegV%5CYIq2ggbVf%2FgU269%2BOQNLYdiPbWGxq%3A1651650089209; _9755xjdesxxd_=32; YD00517437729195%3AWM_NI=CBgNTHNH7EedYP5NGYrkBQS1e6entzIUbb00JtYyf%2BY%2F4q9grM3kOQWdGw407unXFXMKLg1wmYeZ%2BcYYtGfmoEpyneQLp6R5KBmuzAUw63e8iezUL7mmKLa9rfkMwz9%2FUHY%3D; YD00517437729195%3AWM_NIKE=9ca17ae2e6ffcda170e2e6ee89d154b6b687b9c15c93868fa7c15f878e9a82d85f8b98a292b16297f5a2b0cb2af0fea7c3b92a819ea9afd7448e98f9a6e8709b90fbafc653b2b58eb2d23ba7eaab8ff7728b8bae83b33c8aac979ae5219bf1fc92bc6db293fd8cce5b95bc8998b73cf5aba2b9c5548f958488b47daf87abbbaa699b87bca8e567ad9bc09aed6f9394c0d7d13f899ea396f94b97a9fad4e834abbbb6b6cf3dafb385ade433b2baa5aef672fbf19ba9dc37e2a3; YD00517437729195%3AWM_TID=MvfvgG2bV%2FpAURVRAAfUFYHy%2Bi3R%2FmLW; o_act=login; ref_source=other_https://www.zhihu.com/signin?next=/; l_n_c=1; l_cap_id="NWIyZGIzMTZiZDI0NDY2OWFmNDU5MmY0MzFhNGI4ZGI=|1651649199|daebe4b4498f160b46b7f3ef44faf5944b110e41"; r_cap_id="MjYyZTU1ZGQ5NmU1NGE0MThhMDM5MTI2NDk4NmZmY2Y=|1651649199|9ee58bdcf2c8ed2c9df00647112e1a7735130120"; cap_id="MTE4ZGQ3ODU3YWZiNDYyMWI1ODkyZDJkNTdkNjllMWY=|1651649199|7a50692840bde74b3c411db0cd2446c122fbec48"; n_c=1; expire_in=15551999; z_c0=2|1:0|10:1651649211|4:z_c0|92:Mi4xWjY5UkxBQUFBQUFBQUZCVVRaSGpGQmNBQUFCZ0FsVk51bmhmWXdEbjJDaVZLc01sQnZnUEt2bHpZUHFmQm92di1n|e22eabc0c73d4c8d1f17c1807f8b604e4f96c6aa92b2364ca590ac3b1123515e; q_c1=41c0808acca04e2a822b8e6c64e69493|1651649211000|1651649211000; Hm_lpvt_98beee57fd2ef70ccdd5ca52b9740c49=1651649215; tst=r; ariaDefaultTheme=undefined; NOT_UNREGISTER_WAITING=1; KLBRSID=d017ffedd50a8c265f0e648afe355952|1651649216|1651649184'}
#我们提取完成后就可以进行对页面的访问了
qs=request.Request(url,headers=header)
resp=request.urlopen(qs)
print(resp.read().decode('utf-8'))#解码
百尺竿头更进一步!!!加油



