菜鸟学习python网页数据抓取02

使用python抓取网页数据,了解动态更新数据的抓取方法。

以Bing为用户代理,在‘知网翻译助手’中输入索引‘love’,抓取实时更新的网页数据,初步代码如下:

import requests
import json
# 1 define url
url = 'https://dict.cnki.net'
# 2.1 ua pakege
ua = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36 Edg/111\
    .0.1661.41'
header = {
    'headers':ua
}
# 2.2 attribute definition
kw = input('please enter index:')
data = {
    'words':kw
}
# 2.2 excute request
# 3 get response
response = requests.post(url = url, data = data, headers = header)
dic_obj = response.json()
# 4 sustainably storing
filename = kw + '.json'
fp = open(filename,'w',encoding = 'utf-8')
json.dump(dic_obj,fp = fp,ensure_ascii=False)

print('Successfully storing!!!')

运行后发现报错:

经了解后发现,是 url 错误,这里的url是知网翻译助手网址,而不是填入索引后的动态更新url,导致获取到的响应数据并非jsom.格式,因此出现Json解码错误提示。

用开发者工具进行检查发现urL应设置为:

调整后运行,虽然代码运行无误,但是结果文件 love.json内容只有:

然而,当url分别换成 ‘百度翻译’和‘有道翻译’后,改动参数与结果文件分别为:

  1. 有道翻译

url = 'https://dict.youdao.com/keyword/key'
………
data = {
    "text":kw
}
  1. 百度翻译

url = 'https://fanyi.baidu.com/sug'
……
data = {
    'kw':kw
}

可以发现,针对百度翻译的代码能够很好地抓取到目标翻译数据,有道翻译的数据没有拿到想要的数据,初步怀疑是url 或 data参数 没有设置正确。

而上面的 知网翻译助手只有 “401”,猜测:可能是因为需要有使用权限(如高校IP)才会实时更新索引的翻译结果,但这部分代码中并没有涉及这个功能,因此出现401 拒绝服务的响应。

后续保留这个问题继续学习和探索。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值