12. POST请求爬取数据实战
优质
小牛编辑
140浏览
2023-12-01
import json
json.loads(json_str) # json字符串转换成字典
json.dumps(dict) # 字典转换成json字符串
- 使用urllib发送POST数据,并抓取百度翻译信息
from urllib import request,parse
import json
url = 'http://fanyi.baidu.com/sug'
# 定义请求参数
data = {
'kw' : 'python'
}
data = parse.urlencode(data) #编码转换
# 封装headers头信息
headers = {
'Content-Length' : len(data)
}
# 发送请求,抓取信息
req = request.Request(url=url,data=bytes(data,encoding='utf-8'),headers=headers)
res = request.urlopen(req)
# 解析结果并输出
str_json = res.read().decode('utf-8') # json
myjson = json.loads(str_json) # 把json转字典
info = myjson['data'][0]['v']
print(info)
- 使用requests发送POST数据,并抓取百度翻译信息
import requests
import json
url = 'http://fanyi.baidu.com/sug'
# 定义请求参数
data = {
'kw' : 'python'
}
# 发送请求,抓取信息
res = requests.post(url,data=data)
# 解析结果并输出
str_json = res.content.decode('utf-8') # 获取响应的json字串
myjson = json.loads(str_json) # 把json转字典
info = myjson['data'][0]['v']
print(info)
- 使用requests 实现翻译信息抓取
import requests
import json
def fanyi(keyword):
url = 'http://fanyi.baidu.com/sug'
# 定义请求参数
data = {
'kw' : keyword
}
# 发送请求,抓取信息
res = requests.post(url,data=data)
# 解析结果并输出
str_json = res.content.decode('utf-8') # 获取响应的json字串
myjson = json.loads(str_json) # 把json转字典
info = myjson['data'][0]['v']
print(info)
if __name__ == '__main__':
while True:
keyword = input('输入翻译的单词:')
if keyword == 'q':
break
fanyi(keyword)
- urllib模式:
from urllib import request,parse
import json
def fanyi(keyword):
base_url = 'http://fanyi.baidu.com/sug'
# 构建请求对象
data = {
'kw' : keyword
}
data = parse.urlencode(data)
headers = {
'Content-Length':len(data)
}
req = request.Request(url=base_url,data=bytes(data,encoding='utf-8'),headers=headers)
res = request.urlopen(req)
str_json = res.read().decode('utf-8') # 获取响应的json字串
myjson = json.loads(str_json) # 把json转字典
info = myjson['data'][0]['v']
print(info)
if __name__ == '__main__':
while True:
keyword = input('输入翻译的单词:')
if keyword == 'q':
break
fanyi(keyword)