python爬虫都应用requests库来处理复杂的http请求。requests库语法上简洁明了,使用上简单易懂,而且正逐步成为大多数网络爬取的标准。
1.先找到自己python安装目录下的pip
2.在自己的电脑里打开cmd窗口。先点击开始栏,在搜索栏输入cmd,按Enter,打开cmd窗口。
3.在cmd里将目录切换到你的pip所在路径。比如我的在C:\Python34\Scripts这个目录下,先切换到d盘,再进入这个路径。输入:cd C:\Python34\Scripts
4.输入命令pip install requests 执行安装,等待他安装完成就可以了。下图:我之前已经安装成功了
5.安装完之后,就可以使用了
代码:
import requests
#定义请求url
url='https://www.zhaohengrui.cn/'
#发起get请求
res=requests.get(url=url)
#获取响应结果
print(res) #
print(res.content) #b 二进制的文本流
print(res.content.decode('utf-8'))
print(res.text) #获取响应的内容
print(res.headers) #响应头信息{'Server': 'nginx/1.16.1', 'Date': 'Sun, 19 Apr 2020 13:59:16 GMT', 'Content-Type': 'text/html', 'Last-Modified': 'Fri, 06 Mar 2020 02:42:13 GMT', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'ETag': 'W/"5e61b885-d848"', 'Content-Encoding': 'gzip'}
print(res.status_code) #请求状态码 200
print(res.url) #请求url地址
print(res.request.headers) #请求头信息{'User-Agent': 'python-requests/2.23.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'}
当禁止爬虫网页时:
打开源代码页面,找到Network,重新刷新网页,找到第一个网址进入Request Headers中的User-Agent复杂成功
import requests
#定义请求的url
#url='https://www.lmonkey.com/'
url='https://www.xicidaili.com/'
#定义请求头信息
headers={
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36'
}
#发起get请求
res=requests.get(url=url,headers=headers)
#获取响应状态码
code=res.status_code
print(code)
#响应成功后把响应内容写入文件中
if code==200:
with open('./out.html','w',encoding='utf-8') as fp:
fp.write(res.text)
post请求:找到关键字Form Data看关键字
importrequests#定义请求的URL
url='https://fanyi.baidu.com/sug'
#定义请求头信息
headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36'}#post发送的数据 如何做到自己输入自动翻译
data={'kw':'你好'} #字典的值为输入要翻译的内容 #data['ke']=input("输入要翻译的话语:")
#发送请求
res=requests.post(url=url,headers=headers,data=data)#接受返回数据
code=res.status_codeif code==200:print("请求成功")
data=res.json()if data['errno']==0:print("响应成功")#print(data)
#print(data['data'][0]['k'])
k=data['data'][0]['k']
v=data['data'][0]['v'].split(';')[-2]#print(v.split(';')[-2])
print(k,'==',v)