Python爬虫 爬取翻译类网站

来源:互联网 发布:elsevier数据库网址 编辑:程序博客网 时间:2024/06/05 02:42

很多翻译网站都是一下类似的布局,如百度翻译:


当输入要翻译的内容点击翻译后,网站的URL实际上是不会变的,因为大多数翻译网站在进行这个操作的时候用到的是POST请求类型。

我以我爬过的一个日文翻译网站举例:


用Chrome查看接收的文件,这里其实就是我们每次查询发送的POST请求内容。其中timestamp,unqid都是随机的(但是在我爬去的过程中网站好像不会去认证这些),只要在代码中把每次请求加上这些内容就行了。

下面上代码:

import requestsimport lxmlfrom bs4 import BeautifulSoupurl = 'http://nihongo.j-talk.com/'def get_result(content):    data = {}    data['timestamp'] = '1499416657'    data['uniqid'] = '48f377db0a94b119fe3870942785c1b8e0bb654b'    data['kanji'] = content    data['Submit'] = 'Translate Now'    data['kanji_parts'] = 'unchanged'    data['converter'] = 'spacedrollover'    data['kana_output'] = 'katakana'    response = requests.post(url,data = data)     soup = BeautifulSoup(response.text,'lxml')        ###分析html获得结果    big = ''    if soup.findAll('trg',{'class':'trigger'}):        romas = soup.findAll('trg',{'class':'trigger'})        for roma in romas:            roma = roma.get_text()            big += roma        return big    else:        try:            romas = soup.findAll('div',{'class':'katakana'})            for roma in romas:                roma = roma.get_text()                big += roma            return big        except:            return ''inputfilepath = input('输入读取的文件路径')inputfile = open(inputfilepath,'r')outputfile = open('output'+inputfilepath,'w')lines = inputfile.readlines()for line in lines:    line = line.replace('\n','')    result = get_katakana(line)    result1 = "%s    %s\r\n" %(line,result)    print(result1),    outputfile.write(result1)inputfile.close()outputfile.close()