python有道翻译

本文介绍了一种使用Python爬取有道词典翻译结果的方法,提供了两种实现方案:一种是通过正则表达式提取翻译内容,另一种是利用HTMLParser解析网页结构获取所需信息。虽然第二种方法能准确提取信息,但存在程序异常退出的问题。

版本一:

使用正则:

正则我本人使用的比较烂,你可以完全用自己的匹配方式

import re,urllib
    
aa="http://dict.youdao.com/search?tab=chn&keyfrom=dict.top&q="
print ("input q! to exit ")
while 1:
    word=raw_input(">>>")
    if word=="q!":
        exit()
    else:
        word=word.replace(' ','+')            
        url=aa+word
            s=urllib.urlopen(url).read()
        ss = "".join(s).replace("\n"," ")
        #print type(ss)
        #ss = ss.replace("\n"," ")
        comm = re.findall(r'<div id="etcTrans" class="trans-container tab-content">(.*?)</div>',ss)
        #print comm
        con = "".join(comm)
        dd = con.replace(" ","")
        kk = re.findall(r'[^a-z]',dd)
        kk = re.findall(r'[^a-z<>\.//]',dd)
        print "".join(kk)


版本二

使用HTMLParser

import re,urllib
from HTMLParser import HTMLParser

class MyHTMLParser(HTMLParser):
    
    def __init__(self):
        #self.li = ''
        self.readingtitle = 0
        HTMLParser.__init__(self)

    def handle_starttag(self,tag,attrs):
        if tag == 'div':
            for (key,value) in attrs:
                if ('id','etcTrans') in attrs:
                    self.readingtitle = 1

    def handle_data(self,data):
        if self.readingtitle == 1:
            print "".join(data).replace("\n","").replace("\r\n","")
            #self.li += data
        #print self.li

    def handle_endtag(self,tag):
        if tag == 'div':
            self.readingtitle = 0
    #def handle_data(self,data):
        #print data
    
aa="http://dict.youdao.com/search?tab=chn&keyfrom=dict.top&q="
print ("input q! to exit ")
while 1:
    word=raw_input(">>>")
    if word=="q!":
        exit()
    else:
        word=word.replace(' ','+')            
        url=aa+word
            s=urllib.urlopen(url).read()
        ss = "".join(s)
        #print type(ss)
        #ss = ss.replace("\n"," ")
        #print s
        parser = MyHTMLParser()
        #print parser.li
        parser.feed(s)
        parser.close()

 这个版本是完成可以提取出信息的,但是不知为什么老是提取完信息后就抛出错误,请朋友能够运行看看帮我指出错误。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值