飞道的博客

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

454人阅读  评论(0)


系列简介

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

本系列不多废话,小白入门爬虫可以先看一下我的另一个专栏:点击进入:精写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

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环境。


转载:https://blog.csdn.net/qq_43762191/article/details/115678416
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场