溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

python爬蟲如何爬取英文文檔存為PDF,在讀取PDF自動(dòng)翻譯文檔

發(fā)布時(shí)間:2021-12-30 11:18:54 來源:億速云 閱讀:405 作者:小新 欄目:大數(shù)據(jù)

這篇文章給大家分享的是有關(guān)python爬蟲如何爬取英文文檔存為PDF,在讀取PDF自動(dòng)翻譯文檔的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過來看看吧。

        這幾天在爬了Python的官方文檔,但是它里面全是英文,只有數(shù)字,沒有漢字,原諒我這個(gè)英語渣渣搞不懂,只能靠翻譯了,如果是復(fù)制到百度翻譯的話太慢,耗時(shí)間。所以就直接用爬蟲來搞了,自動(dòng)化翻譯文檔

這是百度翻譯的頁面

python爬蟲如何爬取英文文檔存為PDF,在讀取PDF自動(dòng)翻譯文檔

        剛開始想用urllib去做,但是給我報(bào)了一個(gè)我的瀏覽器版本太低了,估計(jì)就是得加headers和UA。太麻煩了,就想到了selenium,直接用selenium妥妥的,下面就是詳細(xì)步驟了。

先從爬Python官網(wǎng)開始吧

python爬蟲如何爬取英文文檔存為PDF,在讀取PDF自動(dòng)翻譯文檔

就只抓了這一頁的數(shù)據(jù)。這個(gè)簡單,直接可以使用requests或者urllib抓取,然后轉(zhuǎn)換成pdf。我的是在框架里面,有點(diǎn)麻煩,如果你覺得麻煩可以直接請求。

安裝Python庫:pip3 install pdfkit

安裝插件wkhtmltopdf,  

https://wkhtmltopdf.org/downloads.html官網(wǎng)地址

import scrapy
import pdfkit

class so_python3_spider(scrapy.Spider):

   name = 'doc'
   def start_requests(self):
       url = 'https://docs.python.org/3.8/whatsnew/3.8.html'
       yield scrapy.Request(url=url, callback=self.parse)
       
   def parse(self, response):
       body = response.selector.xpath('//div[@class="section"]').extract()
       title = response.selector.xpath('//div[@class="section"]/h2/text()').extract()
       html_template = """
                   <!DOCTYPE html>
                   <html lang="en">
                   <head>
                       <meta charset="UTF-8">
                   </head>
                   <body>
                   {content}
                   </body>
                   </html>
               """
       for i in range(len(body)):
           html = html_template.format(content=body[i])
           with open(title[i]+'.html', 'a', encoding='utf8') as f:
               f.write(html)
           options = {
               'page-size': 'Letter',
               'encoding': "UTF-8",
               'custom-header': [
                   ('Accept-Encoding', 'gzip')
               ]
           }
           path_wk = r'D:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe'  # 安裝位置
        config = pdfkit.configuration(wkhtmltopdf=path_wk)
           pdfkit.from_file(title[i]+'.html', title[i]+'.pdf', options=options, configuration=config)

python爬蟲如何爬取英文文檔存為PDF,在讀取PDF自動(dòng)翻譯文檔

        我是直接將一個(gè)div里面的這個(gè)內(nèi)容全部拿下來,然后拼接一個(gè)新的html,將這個(gè)新的HTML轉(zhuǎn)換成PDF。

        第二階段就是打開這個(gè)pdf,讀取該文檔,將其發(fā)送到百度翻譯的框框,獲取翻譯的結(jié)果,重新保存

-----------讀取文檔--------      

def read_pdf_to_text(self):
   fp = open("What’s New In Python 3.8.pdf", "rb")  # 根據(jù)二進(jìn)制的方式讀取
   # 如果是url
   # fp=request.urlopen(url)#網(wǎng)址
   # 創(chuàng)建與文檔關(guān)聯(lián)的解釋器
   parser = PDFParser(fp)
   # 創(chuàng)建一個(gè)pdf文檔對象
   doc = PDFDocument()
   # 連接解釋器和文檔對象
   parser.set_document(doc)
   doc.set_parser(parser)

   # 對文檔進(jìn)行初始化
   doc.initialize("")  # 文件沒有密碼就是空字符串
   # 創(chuàng)建一個(gè)pdf資源管理器
   resouse = PDFResourceManager()
   # 創(chuàng)建一個(gè)參數(shù)分析器
   lap = LAParams()
   # 創(chuàng)建一個(gè)聚合器
   device = PDFPageAggregator(resouse, laparams=lap)
   # 創(chuàng)建一個(gè)頁面解釋器
   interpreter = PDFPageInterpreter(resouse, device)
   # 開始讀取內(nèi)容
   for page in doc.get_pages():
       # 調(diào)用頁面解釋器來解釋
       interpreter.process_page(page)
       # 使用聚合器來獲得內(nèi)容
       layout = device.get_result()
       for out in layout:
           if hasattr(out, "get_text"):
               content = out.get_text()

將文檔讀取,發(fā)送到百度翻譯https://fanyi.baidu.com/?aldtype=16047#en/zh

找到輸入框和輸出框的位置

python爬蟲如何爬取英文文檔存為PDF,在讀取PDF自動(dòng)翻譯文檔

翻譯模塊(復(fù)制到微信里,格式有點(diǎn)問題,大家自己修正)

def baidu_fanyi(self, content):

   time.sleep(5)
   # 找到輸入框的位置,并將內(nèi)容發(fā)送到該位置
   self.browser.find_element_by_id('baidu_translate_input').send_keys(content)
   time.sleep(5)
   # 獲取輸出框的內(nèi)容
   con = self.browser.find_element_by_class_name('output-bd')
   # 寫入文件
   with open('python3.8.txt', 'a', encoding='utf8') as f:
       # 由于content內(nèi)容帶有回車符,所以不用\n
       f.write(content + con.text + '\n')
   # 將輸入框清空,等待下一次輸入
   self.browser.find_element_by_id('baidu_translate_input').clear()
   time.sleep(5)

這是翻譯后輸出的內(nèi)容

python爬蟲如何爬取英文文檔存為PDF,在讀取PDF自動(dòng)翻譯文檔

當(dāng)然還有可以優(yōu)化加強(qiáng)的部分,比如使用pyqt做個(gè)界面,打包成exe就可以當(dāng)程序用了。有什么建議留言。

感謝各位的閱讀!關(guān)于“python爬蟲如何爬取英文文檔存為PDF,在讀取PDF自動(dòng)翻譯文檔”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI