网络爬虫的本质:通过程序模拟浏览器请求进行批量化网页信息获取
1 网页调试工具
单击右键,进入网页检查工具-->network-->清除已经加载的数据-->在输入框输入单词-->在监控处看到sug文件
image.png
在输入框输入字母的时候慢一点,每次都会出现一个sug文件,从中可以总结出相关规律:
- 1 请求url地址:https://fanyi.baidu.com/sug
- 2 请求方式:POST
- 3 参数:{"kw":需要翻译的单词}
- 4 返回结果:json格式
2 使用urllib的post请求
rom urllib import request,parse
import json
import ssl
#若报错:unable to get local issuer certificate
#(⽆法获取本地颁发者证书)错误,请使⽤下⾯代码
#全局取消证书验证
ssl._create_default_https_context = ssl._create_unverified_context
def BaiduFanyi(keyword):
# 请求的url
url = 'https://fanyi.baidu.com/sug'
# post 发送的数据
data = {
'kw': keyword
}
data = parse.urlencode(data)
# 发送请求,抓取信息
req = request.Request(url=url, data=bytes(data,encoding='utf-8'))
res = request.urlopen(req)
if res.status == 200:
# 获取结果
json_data = json.loads(res.read().decode('utf-8'))
print(json_data['data'][0]['v'])
else:
print('请求失败')
if __name__ == '__main__':
while True:
keyword = input('请输入要翻译的单词:')
if keyword == 'q':
break
BaiduFanyi(keyword)
3 使用requests的post请求
import requests
import json
import ssl
#全局取消证书验证
ssl._create_default_https_context = ssl._create_unverified_context
def BaiDufanyi(keyword):
# 请求的url
url = 'https://fanyi.baidu.com/sug' # 由post实时信息获得
# post 发送的数据
data = {
'kw': keyword
}
# 发起请求,抓取信息
res = requests.post(url,data=data)
if res.status_code == 200:
# 获取结果
# json_data = json.loads(res.content.decode('utf-8'))
json_data = res.json()
print(json_data['data'][0]['v'])
else:
print('请求失败')
if __name__ == '__main__':
while True:
keyword = input('请输入要翻译的单词:')
if keyword == 'q':
break
BaiDufanyi(keyword)
4 总结
- 爬虫的整个流程相对固定
- 关键是找到网页是如何发送请求的规律,然后才能使用代码进行模拟
- 先获取到网页上面的有用信息,之后则是对获取的信息进行解析,得到我们最终想要爬取的信息
网友评论