Python爬虫 爬取翻译类网站
程序员文章站
2022-05-04 12:07:24
...
很多翻译网站都是一下类似的布局,如百度翻译:
当输入要翻译的内容点击翻译后,网站的URL实际上是不会变的,因为大多数翻译网站在进行这个操作的时候用到的是POST请求类型。
我以我爬过的一个日文翻译网站举例:
用Chrome查看接收的文件,这里其实就是我们每次查询发送的POST请求内容。其中timestamp,unqid都是随机的(但是在我爬去的过程中网站好像不会去认证这些),只要在代码中把每次请求加上这些内容就行了。
下面上代码:
import requests
import lxml
from bs4 import BeautifulSoup
url = '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()
上一篇: Android之ObjectAnimator使用记录
下一篇: Unity之Animator