4

爬虫百战穿山甲(2):百度翻译爬虫

 3 years ago
source link: https://blog.csdn.net/qq_43762191/article/details/115678416
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

爬虫百战穿山甲(2):百度翻译爬虫

在这里插入图片描述


将我的“爬虫百战穿山甲”团队平时做的项目放到这个专栏里吧,
仅供学习研究使用,如有侵权,私信我删除,不得转载

本系列不多废话,小白入门爬虫可以先看一下我的另一个专栏:点击进入:精写15篇,带你入门Python爬虫

里面有十一篇教程,带四个项目。


在这里插入图片描述

如果找不到sug的话可以多搜几次,另一个包也有这些东西,但是post上去会报错。
那个包的数据格式是:“query”,避个雷。
在这里插入图片描述

往下翻,找到了form data。

于是就可以编写代码了:


import requests
import json

url = "https://fanyi.baidu.com/sug"
        # 定义请求的参数
headers={
        'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36 Edg/86.0.622.38'
    }

in_data = input("请输入:")
data = {'kw': in_data}
        # 创建请求, 发送请求, 爬取信息
res = requests.post(url, data=data,headers = headers)
        # 解析结果
str_json = res.content
myjson = json.loads(str_json)
print(myjson['data'][0]['v'])

本章相对来说是很简单的,今天太累了。上面这串代码美中不足的地方在于可以英译汉,无法汉译英,估计是被反了。


UI由团队成员“应X”出品

class MainWindow(QMainWindow):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)

        # 设置主窗口的标题
        self.setWindowTitle("百度翻译客户端——Python版本      Write from 87-MyFriends")

        # 设置窗口大小
        self.resize(1500, 850)

        # 设置窗口不可改变大小
        self.setFixedSize(self.width(), self.height())

        self.path = None
        self.txtEditor = None
        self.txtATranslate = None
        self.txtEditor_txt = None
        self.txtATranslate_txt = None

        # 消息栏
        self.status = self.statusBar()
        self.status.showMessage('欢迎来到百度翻译客户端,由Python PyQt5 和 requests 模块大力支持,write with 87-MyFriends.', 10000)

        # 控件设置
        self.initUi()

    def initUi(self):
        # 提示文本
        self.txtEditor_txt = QLabel(self)
        self.txtEditor_txt.setText('文本输入框(待翻译文本输入)')
        self.txtEditor_txt.setGeometry(300, 0, 100, 100)
        self.txtATranslate_txt = QLabel(self)
        self.txtATranslate_txt.setText('翻译输出框(已翻译文本输出)')
        self.txtATranslate_txt.setGeometry(1050, 0, 100, 100)

        # 文本输入框(待翻译)
        self.txtEditor = QTextEdit(self)
        self.txtEditor.setGeometry(40, 70, 700, 700)

        # 文本输出框(已翻译)
        self.txtATranslate = QTextEdit(self)
        self.txtATranslate.setGeometry(760, 70, 700, 700)

        # 底部超链接
        link = QLabel(self)
        link.setText(
            '详细释义请参照<a href="https://fanyi.baidu.com">百度翻译</a>。若本产品使用不方便,请下载<a href="https://fanyi.baidu.com/client/download/redirect">百度翻译桌面端(官方)</a>')
        link.setGeometry(840, 780, 1000, 50)

        # 菜单栏控件设置函数
        self.initMenuBar()

    def initMenuBar(self):
        menuBar = self.menuBar()
        textMenu = menuBar.addMenu('文本(&T)')
        helpMenu = menuBar.addMenu('帮助(&H)')

        # ==== 文本部分 ==== #
        translate_btn = QAction(QIcon('./images/icon.ico'), 'Translate 翻译', self)
        translate_btn.setShortcut('Ctrl+T')
        translate_btn.triggered.connect(self.translate)
        textMenu.addAction(translate_btn)

        # ==== 帮助部分 ==== #
        aHelpAbout = QAction('关于(&A)...', self)
        aHelpAbout.triggered.connect(self.onHelpAbout)
        helpMenu.addAction(aHelpAbout)

    def translate(self):
        url = "https://fanyi.baidu.com/sug"
        headers={
		        'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36 Edg/86.0.622.38'
		    }
		
		in_data = input("请输入:")
		data = {'kw': in_data}
		        # 创建请求, 发送请求, 爬取信息
		res = requests.post(url, data=data,headers = headers)
		        # 解析结果
		str_json = res.content
		myjson = json.loads(str_json)
		#print(myjson['data'][0]['v'])
        self.txtATranslate.setPlainText(myjson['data'][0]['v'])

    def onHelpAbout(self):
        QMessageBox.information(self, '信息', '作者:87-MyFriends\n版权所有')


if __name__ == '__main__':
    app = QApplication(sys.argv)
    app.setWindowIcon(QIcon('./images/icon.ico'))
    main = MainWindow()
    main.show()
    sys.exit(app.exec_())

不过需要安装QT环境。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK