今天实战运用requests
目录
一、爬搜狗
代码分析
二、照片
代码分析
三、搜狗关键词搜索爬取
代码分析
四、爬取百度翻译
代码分析
# -*- coding: utf-8 -*-
import requests
url="http://www.sogou.com"
respond=requests.get(url)#1
respond.encoding=respond.apparent_encoding
print(respond.text)
1、respond.encoding作用从http header中提取响应内容编码。若header中没有charset字段则默认为ISO-8859-1编码模式,则无法解析中文,有可能会出现乱码。respond.apparent_encoding作用为从内容中分析出的响应内容编码。所以使用respond.encoding=respond.apparent_encoding
运行结果:
这里爬爬我博客的头像
①首先获得图片链接
import requests
src = 'https://avatar.csdnimg.cn/D/2/1/1_m0_60960867_1633660031.jpg'
respond = requests.get(src)#1
with open('touxiang.jpg', 'wb') as f:#2
f.write(respond.content)#3
print('搞定!!')
#1 先用requests库的get请求访问图片链接
#2 以touxiang为文件名,'wb'为读写类型,这里是写入。('rb'为读取)
#3 然后用respond.content接收图片内容,然后再写入(write)
运行结果:
就出现了
点开就可以看到我自己的头像
import requests
url='https://www.sogou.com/web'
kw=input('enter a word: ')#1
header={
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36 Edg/95.0.1020.53'
}#2
param={
'query':kw
}
respond=requests.get(url=url,params=param,headers=header)
content=respond.text#3
fileName=kw+'.html'#4
with open(fileName,'w',encoding='utf-8') as f:
f.write(content)
print(fileName,'搞定!!')
我们使用所爬网站中的User-Agent来进行伪装,让它以为我们是它本身的一部分,从而使得我们能够成功爬取我们需要的信息。
#1 输出提示词并键盘输入关键字
#2 请求头,打开搜狗搜索,鼠标右键选择‘检查’,在网络中,点击搜索,可得到请求头。
#3 请求url对应的页面内容
#4 设置文件名为键盘输入的关键字,并且为html文件
运行结果:
首先要找到接口,请求方式,以及请求头
import json
import requests
url='https://fanyi.baidu.com/sug'
word=input('请输入您要翻译的词语或句子:')
header={
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36 Edg/95.0.1020.53'
}
data={
'kw':word
}
repond=requests.post(url=url,data=data,headers=header)#1
dic_obj=repond.json()#2
filename=word+'.json'#3
with open(filename,'w',encoding='utf-8') as fp:
json.dump(dic_obj,fp=fp,ensure_ascii=False)#4
j=dic_obj['data'][1]['v']#5
print(j)
#1 POST请求
#2 response.json() 是把返回响应的json字符串转换成字典
#3 设置文件名为键盘输入,并且为json文件
#4 json.dump()是把python对象转换成json对象生成一个fp的文件流,和文件相关ensure_ascii=False:默认输出中文,如果把这个该成True,就可以输出ASCLL码
#5 设置为字典形式
运行结果