前嗅网络发表于2022年0月21日17:41最后回复于2022年0月21日17:41

【从零学爬虫】一文学会批量翻译

559浏览量

0评论

 l 采集场景

【场景描述】通过采集百度翻译后的数据实现批量翻译。

【源网站介绍】百度翻译提供即时免费200+语言翻译服务,拥有网页和APP产品,百度翻译APP还支持拍照翻译、语音翻译等特色功能,随时随地沟通全世界。

【使用工具】前嗅ForeSpider数据采集系统,免费下载:

ForeSpider免费版本下载地址

 

采集网站

【入口网址】https://fanyi.baidu.com/translate?aldtype=16047&query=&keyfrom=baidu&smartresult=dict&lang=auto2zh#auto/zh/

【采集内容】

将之前采集好的某新闻网站英文内容,使用百度翻译成中文后,采集翻译好的中文内容。

 

【采集效果】如下图所示:

 


l 采集思路

 


配置步骤

1. 新建采集任务

选择【采集配置】,点击任务列表右上方【+】号可新建采集任务,将采集入口地址填写在【采集地址】框中,【任务名称】自定义即可,点击下一步。

 

 

2.观察数据请求链接

①复制任意一条需要翻译的英文文本内容,在浏览器中打开百度翻译,点击F12打开,如下图所示:



②将英文文本复制在左侧框中,观察右侧出现翻译请求。

 

 

打开每个请求,查看Preview内容,找到翻译内容返回的请求链接,如下图所示:



③查看请求header,发现该请求为post请求。

 


找到post请求的Cookie、refer和FormData,如下图所示:

  


观察发现,不同的翻译请求链接,cookie和refer不变,FormData中的query内容变化,query参数即为需要翻译的英文文本。


所以可以用脚本拼出这个post请求从而获取到翻译后的数据。


我们再打开这个请求的preview预览界面,观察翻译后的数据位置,发现所需要的翻译后的文本,就是js中data下的每个对象中的dst值合起来的内容。

 


我们再打开response界面,查看返回请求的内容是否与浏览界面一致。

 


观察发现数据结构一致,但是返回的为unicode编码,而非中文,所以后期配置脚本时,需要将unicode编码转中文一下。

 

3. 创建数据表

①新建数据表,具体如下图所示:

 


②将原来模板中的链接抽取删掉,添加一个数据抽取,如下图所示:

 


③关联数据表

 

 

④由于数据在请求的源码中,数据抽取需要写脚本来实现。打开脚本窗口,新建数据抽取脚本。

 


⑥先写脚本调用数据表中的英文文本

 


然后再拼写post请求并打开请求,获取其中翻译好的中文数据:如下图所示:

 


脚本如下所示:

var table = DATADB.Open("news"); //打开数据表newsvar recs = table.Query(""); //查询条件为空for(k in recs each v)//调用每个数据{  record re;//定义一个返回值,返回数据固定搭配  var transid = v.id;//调用news中的id  var trans = v.content;//调用news中的content  var con=trans;//待翻译的文字  var link="https://fanyi.baidu.com/transapi";//link为请求链接  var header;//定义一个请求头  header.cookie = "PSTM=1640935140; __yjs_duid=1_6be72458114c4fd1196316a46e9ce7451641260822171; REALTIME_TRANS_SWITCH=1; FANYI_WORD_SWITCH=1; HISTORY_SWITCH=1; SOUND_SPD_SWITCH=1; SOUND_PREFER_SWITCH=1; APPGUIDE_10_0_2=1; BIDUPSID=096B3D7C050B28965962CD01423B63E0; BDUSS_BFESS=0p0OGpBR2E5VlAtZm9tMVVXVWk1QzR2dUsza3gxSndpLVhqT1NOMWhNT2ZPSDVpRUFBQUFBJCQAAAAAAAAAAAEAAACB~KWqvtayv7K7x-fM7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJ-rVmKfq1Zib; H_WISE_SIDS=110085_127969_174443_179350_184716_189755_190621_191243_194085_194519_194530_196425_197242_197471_197711_197947_198268_198502_199023_199177_199571_200965_201193_201539_201706_202651_203190_203309_203519_203525_204031_204535_204726_204779_204860_204910_205218_205406_205485_205569_206007_206728_206814_207235_207265_207473_207512_207729_207831_207863_207893_207990_208001_208049_208055_208115_208137_208182_208223_208225_208267_208270_208312_208343_208365_208686_208721_208770_209059_209116_209345_209394_209484_209487_209512_209520_209568_209674_209749_209847_210164_210357_8000097_8000122_8000142_8000143_8000153_8000164_8000174_8000177_8000182_8000189; MCITY=-332%3A; BAIDUID=1D82B7C477AD76BA7C657C4B21592D1D:SL=0:NR=10:FG=1; BDORZ=B490B5EBF6F3CD402E515D22BCDA1598; delPer=0; PSINO=2; BDRCVFR[feWj1Vr5u3D]=I67x6TjHwwYf0; H_PS_PSSID=34812_35912_36165_34584_36122_36193_36125_36226_26350_22157_36061; BA_HECTOR=80ag0l81ah0h0g806k1h5sjt50r; BCLID=11037166929813919530; BDSFRCVID=IeFOJexroG0xWiQDV4eCrph4ZSNbUdrTDYrEQ-mAp1wm6V8VJeC6EG0Pts1-dEu-EHtdogKK02OTHkFF_2uxOjjg8UtVJeC6EG0Ptf8g0M5; H_BDCLCKID_SF=tbuHVC8htID3qnjpKITaMJF0bMQJ5C62aKDs2qb7BhcqEIL4eJj8yjbBQbDq-TbH-I-JhJ5mMq4MSMbSj4D5X4A33lJwB4QlLaT9aKO4fp5nhMtGb67JDMPF-4bpb4Qy523ioIovQpnOslQ3DRoWXPIqbN7P-p5Z5mAqKl0MLPbtbb0xb6_0jTQyDN_ftjnMM4oKWJca2bK_Hn7zeUJbBU4pbt-qJJ-OLgvJ3qbCJtbFq4Jdjh613t4AqHjnBT5DtecIaJAh3bbk8Jb3qtR126DkQN3T2bkO5bRiL66S3j62Dn3oyT0KXp0nMPjly5jtMgOBBJ0yQ4b4OR5JjxonDh83bG7MJPKtfJC8VItKJDP2bP365ITa-PJH-UnLq5FOJgOZ04n-ah02VR53yxO4hDuhKl33tpT-W23M_bcm3UTKsqTdjbuhBPbBbMTiLtbvQHn4KKJxbInfOUJD0-5UyfCjhUJiB58HBan7BhQIXKohJh7FM4tW3J0ZyxomtfQxtNRJ0DnjtpChbCDxjjtbD6cWepJf-K6aK6Q3LRjXb6rjDnCr-RA2XUI8LNDH26O4yPjIKUQTbloKqbPmW4ov-qLIjJO7ttoy3mkJabjuK4-aEfjS567a-fL1Db39hTvMtg3tslrttDToepvoD55c3MkfQ4jdJJQOBKQB0KnGbUQkeq8CQft20b0EeMtjKjLEtR3j3Ru8KJjEe-Kk-PnVeUF8Q4nZKRvHa2kjXU3VLlb4Mb5JKR3sjhI9Xx5PKnjn3N5HKxDEalj2ht3zjlDW3xI8LNj405OTbTADsRbNb66pO-bghPJvyTOXXnO7aM5lXbrtXp7_2J0WStbKy4oTjxL1Db3JKjvMtgDtVJO-KKC5MKIRDfK; BCLID_BFESS=11037166929813919530; BDSFRCVID_BFESS=IeFOJexroG0xWiQDV4eCrph4ZSNbUdrTDYrEQ-mAp1wm6V8VJeC6EG0Pts1-dEu-EHtdogKK02OTHkFF_2uxOjjg8UtVJeC6EG0Ptf8g0M5; H_BDCLCKID_SF_BFESS=tbuHVC8htID3qnjpKITaMJF0bMQJ5C62aKDs2qb7BhcqEIL4eJj8yjbBQbDq-TbH-I-JhJ5mMq4MSMbSj4D5X4A33lJwB4QlLaT9aKO4fp5nhMtGb67JDMPF-4bpb4Qy523ioIovQpnOslQ3DRoWXPIqbN7P-p5Z5mAqKl0MLPbtbb0xb6_0jTQyDN_ftjnMM4oKWJca2bK_Hn7zeUJbBU4pbt-qJJ-OLgvJ3qbCJtbFq4Jdjh613t4AqHjnBT5DtecIaJAh3bbk8Jb3qtR126DkQN3T2bkO5bRiL66S3j62Dn3oyT0KXp0nMPjly5jtMgOBBJ0yQ4b4OR5JjxonDh83bG7MJPKtfJC8VItKJDP2bP365ITa-PJH-UnLq5FOJgOZ04n-ah02VR53yxO4hDuhKl33tpT-W23M_bcm3UTKsqTdjbuhBPbBbMTiLtbvQHn4KKJxbInfOUJD0-5UyfCjhUJiB58HBan7BhQIXKohJh7FM4tW3J0ZyxomtfQxtNRJ0DnjtpChbCDxjjtbD6cWepJf-K6aK6Q3LRjXb6rjDnCr-RA2XUI8LNDH26O4yPjIKUQTbloKqbPmW4ov-qLIjJO7ttoy3mkJabjuK4-aEfjS567a-fL1Db39hTvMtg3tslrttDToepvoD55c3MkfQ4jdJJQOBKQB0KnGbUQkeq8CQft20b0EeMtjKjLEtR3j3Ru8KJjEe-Kk-PnVeUF8Q4nZKRvHa2kjXU3VLlb4Mb5JKR3sjhI9Xx5PKnjn3N5HKxDEalj2ht3zjlDW3xI8LNj405OTbTADsRbNb66pO-bghPJvyTOXXnO7aM5lXbrtXp7_2J0WStbKy4oTjxL1Db3JKjvMtgDtVJO-KKC5MKIRDfK; Hm_lvt_64ecd82404c51e03dc91cb9e8c025574=1648182432,1650348546; Hm_lpvt_64ecd82404c51e03dc91cb9e8c025574=1650348546; ab_sr=1.0.1_NWQwZTNiNzQ5YjU4NmNjZjEzNjIyMjE4MWFmNzBjMDg0MTAwY2NkOGNkNDIyNzI3M2M3YWIwMmYyYzE4NjM0ZTE2ZjZlNzQ1ODliYzQ4M2M1ZGMzOWRhMWVjY2E1NmNiOWUyYWU4OTIwZTViNmFlMWM2MjJmYjlmOTQ5NDY3OWM0YjVlOGI2OGYzYzI0YTVjYzc3MTNhZTA1ZjUyMTI2MDNkODg1YWIxZjNjMWMzMDgyNGZhY2IxZTI2ODAwMzg0";////定义请求头的cookie,与网页上的cookie一致  header.refer = "https://fanyi.baidu.com/translate?aldtype=16047&query=&keyfrom=baidu&smartresult=dict&lang=auto2zh";//定义请求头的refer,与网页上的refer一致  var post="from=en&to=zh&query="+con+"&source=txt";//定义post,将FormData拼出来  var doc = EXTRACT.OpenDoc(CHANN,link,post,header);//打开post请求  if(doc){  var str = doc.GetDom().GetSource().ToStr();//打开请求后,将获取请求源码并转为字符串格式  jScript js;//定义一个js  var obj = js.RunJson(str);//跑一下js  var a="";//定义一个变量a  for(i=0;i<obj.data.length;i++){    var search=obj.data[i].dst;//取obj中的data中的第i个对象的dst值    var ttt=search.ReplaceAll("u","\\u");//将search文本中的u用\\u替换    ttt=ttt.ToStr();//转为字符串    var trans_con=doc.GetDom().UnEscape(ttt);//unicode转中文    a+=trans_con;//a为a+trans_con  }  re.id=transid;//返回id  re.trans_con=a;//返回翻译后内容  RESULT.AddRec(re,this.schemaid);//返回一个数据  EXTRACT.CloseDoc(doc);//关闭请求,固定搭配  }}


⑥采集预览

点击采集预览,加载片刻后,点击停止测试。



发现数据都采集出来了,说明配置成功。

 

 

采集步骤

模板配置完成,采集预览没有问题后,可以进行数据采集。

1.建立数据表单

选择【数据建表】,点击【表单列表】中该模板的表单,在【关联数据表】中选择【创建】,表名称自定义,这里命名为【fanyi】(注意命名不能用数字和特殊符号),点击【确定】。创建完成,勾选数据表,并点击右上角保存按钮。

 

 

2.开始采集

选择【数据采集】,勾选任务名称,点击【开始采集】,则正式开始采集。

 

 

3.导出数据

采集结束后,可以在【数据浏览】中,选择数据表查看采集数据,并可以导出数据。

 

 


4.数据展示

导出的文件打开如下图所示:

 

 

*本教程仅供教学使用,严禁用于商业用途!


l 前嗅简介

前嗅大数据,国内领先的研发型大数据专家,多年来致力于为大数据技术的研究与开发,自主研发了一整套从数据采集、分析、处理、管理到应用、营销的大数据产品。前嗅致力于打造国内第一家深度大数据平台!


私信

举报