欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

爬虫04_附带功能的爬

程序员文章站 2024-01-27 14:13:28
...

02爬取了百度页面
03爬取了搜索页面 有搜索结果 但是没有爬出功能
所以04就来爬功能啦~
爬出来的东西得有用呀

step1

以简单的翻译页面为例icibi在线翻译(其他的比较复杂)
爬虫04_附带功能的爬这里的网址其实就是表面,但是我们找的东西不在里面,所以这里的指定url就不能直接复制网址啦~ 得F12去工作台找!
进去之后发现空空如也。
爬虫04_附带功能的爬这时候Ctrl+R / F5 , 就刷刷刷出来一堆了~
爬虫04_附带功能的爬
OMG,这么多!!
分析:翻译功能:选翻译类型????输入翻译文本????翻译按钮
点了之后,就会给服务器发送请求,然后服务器再把翻译的结果返回过来,显示到我屏幕里,也就是叫它动态响应
爬虫04_附带功能的爬用红框框框起来的地方,就是专门捕获动态响应数据的地方!
但是点开后发现,空空如也……
是哪里出了问题吗?
当然不是,是因为我们还没有点击翻译!!
点完后……(适当的按ctrl+R)

这个就是带有翻译功能的url,真正要找的url。
爬虫04_附带功能的爬

这里的意思是:请求索取得到返回的数据是json格式的。如果你要问后面还有个text,那就说明返回的值有两种形式,都可以试一下,不同网站有不同的类型,越高级的网站加密的就越复杂。
返回的值时json类型的,所以到时候我们直接用json解码就好啦。
爬虫04_附带功能的爬往下翻会看到From Data,也就是发给服务器的参数,这里f也就是from,t是to,w就是输入的翻译文本,我这里是自动检测,所以f和t都是auto。
爬虫04_附带功能的爬切记,这组数据是用字典封装的,我们先把它弄到pycharm里~

data = {
    'f':'auto',
    't':'auto',
    'w':'reptile'
}

step2

import requests
import json  #引入这个模块是为了解码
#指定辛苦找到的url
url = 'http://fy.iciba.com/ajax.php?a=fy'
#伪装信息
header = {
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.67 Safari/537.36 Edg/87.0.664.52'
}
#输入翻译词
word = input('请输入翻译词:')
#这里就是from data里面的了
data = {
    'f':'auto',
    't':'auto',
    'w':word
}

以上都是比较基础的动态获取,用input实现了一个动态翻译的效果,可以多加两个input来实现自行选择翻译语种,具体每种语言的代号就去抓包工具里找哦~

接下来的代码就要好好学啦~

#发送请求。   .content是转成二进制的意思  .decode()是指定编译格式,默认编码为字符串编码
response = requests.post(url=url, headers=header, data=data).content.decode()
# 用json模块的loads实现把爬下来的数据转换成我们能看懂的数据
# 这里大家可以打印一下response看一看数据就知道了~要多实践哦
a = json.loads(response)['content']
b = a['word_mean']
print('----------------------------------')
for i in b:
    print(i)
print('----------------------------------')
print('完成')

至于为什么要[‘content’]和[‘word_mean’],是因为爬取下来的是一个字典,我们需要的翻译在字典的字典里,经典套娃…然后再遍历出我们要的翻译。

学习参考:https://blog.csdn.net/BcXbHello/article/details/110289015


补充:

只要是中译英就会报错(不管是auto-auto还是zh-en都会报错)
英译中就不会报错(auto或者en-zh都不会报错)
为啥呢???

相关标签: python