Python Crawler tatsächlicher Kampf, Anfragen + Zufallsmodul, Python macht Desktop-Übersetzungssoftware

Vorwort

Versuchen Sie noch heute, Übersetzungssoftware in Python zu erstellen. Hier, um den Code für die Freunde bereitzustellen, die ihn benötigen, und einige Tipps zu geben.

Die Funktion des Programms ist sehr einfach, Sie können einen beliebigen Übersetzer aus den drei gängigen Übersetzern auswählen, um Wörter und Sätze zu übersetzen, das PyQt5-Modul verwenden, um die Mensch-Computer-Interaktion zu realisieren, das Anforderungsmodul verwenden, um Anforderungen zu senden, und die Übersetzungsergebnisse an senden der Benutzer.

Bildbeschreibung hier einfügen

Entwicklungswerkzeuge

Python-Version: 3.8

Verwandte Module:

fordert Modul
re Modul
Zeitmodul
js2py Modul
Zufallsmodul
Hashlib Modul

Umgebung bauen

Installieren Sie Python und fügen Sie es der Umgebungsvariable hinzu, und pip installiert die erforderlichen zugehörigen Module.

Ideenanalyse

Die Funktion des Programms ist sehr einfach, Sie können einen beliebigen Übersetzer aus den drei gängigen Übersetzern auswählen, um Wörter und Sätze zu übersetzen, das PyQt5-Modul verwenden, um die Mensch-Computer-Interaktion zu realisieren, das Anforderungsmodul verwenden, um Anforderungen zu senden, und die Übersetzungsergebnisse an senden der Benutzer.

Implementierung

Nehmen wir als Beispiel die Baidu-Übersetzung

Übersetzen Sie willkürlich, um Seiteninformationen anzuzeigen.
Bildbeschreibung hier einfügen
Aus dem Bild ist ersichtlich, dass es sich um einen Post-Request handelt und auch die Daten des Request-Headers sind deutlich im Bild dargestellt.

Anforderungsheader

Code


'''
User-Agent和Cookie 需要自行添加
Token中的T换成小写t
Function:
	翻译类
'''
class baidu():
	def __init__(self):
		self.session = requests.Session()
		self.session.cookies.set('BAIDUID', '19288887A223954909730262637D1DEB:FG=1;')
		self.session.cookies.set('PSTM', '%d;' % int(time.time()))
		self.headers = {
    
    
							'User-Agent': 'XXX'
						}
		self.data = {
    
    
						'query': '',
						'simple_means_flag': '3',
						'sign': '',
						'Token': '',
					}
		self.url = 'https://fanyi.baidu.com/v2transapi'
	def translate(self, word):
		self.data['query'] = word
		self.data['token'], gtk = self.getTokenGtk()
		self.data['token'] = '6482f137ca44f07742b2677f5ffd39e1'
		self.data['sign'] = self.getSign(gtk, word)
		res = self.session.post(self.url, data=self.data)
		return [res.json()['trans_result']['data'][0]['result'][0][1]]
	def getTokenGtk(self):
		url = 'https://fanyi.baidu.com/'
		res = requests.get(url, headers=self.headers)
		token = re.findall(r"token: '(.*?)'", res.text)[0]
		gtk = re.findall(r";window.gtk = ('.*?');", res.text)[0]
		return token, gtk
	def getSign(self, gtk, word):
		evaljs = js2py.EvalJs()
		js_code = js.bd_js_code
		js_code = js_code.replace('null !== i ? i : (i = window[l] || "") || ""', gtk)
		evaljs.execute(js_code)
		sign = evaljs.e(word)
		return sign

Implementierung des grafischen Schnittstellencodes

class Demo(QWidget):
	def __init__(self, parent=None):
		super().__init__()
		self.setWindowTitle('翻译软件-公众号: Python工程狮')
		self.Label1 = QLabel('原文')
		self.Label2 = QLabel('译文')
		self.LineEdit1 = QLineEdit()
		self.LineEdit2 = QLineEdit()
		self.translateButton1 = QPushButton()
		self.translateButton2 = QPushButton()
		self.translateButton3 = QPushButton()
		self.translateButton1.setText('baidu翻译')
		self.translateButton2.setText('youdao翻译')
		self.translateButton3.setText('Google翻译')
		self.grid = QGridLayout()
		self.grid.setSpacing(12)
		self.grid.addWidget(self.Label1, 1, 0)
		self.grid.addWidget(self.LineEdit1, 1, 1)
		self.grid.addWidget(self.Label2, 2, 0)
		self.grid.addWidget(self.LineEdit2, 2, 1)
		self.grid.addWidget(self.translateButton1, 1, 2)
		self.grid.addWidget(self.translateButton2, 2, 2)
		self.grid.addWidget(self.translateButton3, 3, 2)
		self.setLayout(self.grid)
		self.resize(400, 150)
		self.translateButton1.clicked.connect(lambda : self.translate(api='baidu'))
		self.translateButton2.clicked.connect(lambda : self.translate(api='youdao'))
		self.translateButton3.clicked.connect(lambda : self.translate(api='google'))
		self.bd_translate = baidu()
		self.yd_translate = youdao()
		self.gg_translate = google()
	def translate(self, api='baidu'):
		word = self.LineEdit1.text()
		if not word:
			return
		if api == 'baidu':
			results = self.bd_translate.translate(word)
		elif api == 'youdao':
			results = self.yd_translate.translate(word)
		elif api == 'google':
			results = self.gg_translate.translate(word)
		else:
			raise RuntimeError('Api should be <baidu> or <youdao> or <google>...')
		for result in results:
			self.LineEdit2.setText(result)

zu guter Letzt

Um den Lesern zu danken, möchte ich einige meiner letzten Lieblings-Programmierartikel mit Ihnen teilen, um sie jedem Leser zurückzugeben, und hoffe, Ihnen helfen zu können.

Es gibt eine vollständige Reihe von Informationen, die für Anfänger geeignet sind~

Komm und wachse mit Xiaoyu auf!

① Mehr als 100+ Python-E-Books (Mainstream- und klassische Bücher sollten verfügbar sein)

② Informationen zur Python-Standardbibliothek (die vollständigste chinesische Version)

③ Quellcode des Reptile-Projekts (vierzig oder fünfzig interessante und klassische Handarbeitsprojekte und Quellcode)

④ Videos zu Python-Grundlagen, Crawlern, Webentwicklung und Big-Data-Analyse (für Einsteiger geeignet)

⑤ Python Learning Roadmap (Abschied vom einflussreichen Lernen)

Material

Supongo que te gusta

Origin blog.csdn.net/Modeler_xiaoyu/article/details/128207873
Recomendado
Clasificación