您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關python爬蟲如何爬取英文文檔存為PDF,在讀取PDF自動翻譯文檔的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
這幾天在爬了Python的官方文檔,但是它里面全是英文,只有數字,沒有漢字,原諒我這個英語渣渣搞不懂,只能靠翻譯了,如果是復制到百度翻譯的話太慢,耗時間。所以就直接用爬蟲來搞了,自動化翻譯文檔
這是百度翻譯的頁面
剛開始想用urllib去做,但是給我報了一個我的瀏覽器版本太低了,估計就是得加headers和UA。太麻煩了,就想到了selenium,直接用selenium妥妥的,下面就是詳細步驟了。
先從爬Python官網開始吧
就只抓了這一頁的數據。這個簡單,直接可以使用requests或者urllib抓取,然后轉換成pdf。我的是在框架里面,有點麻煩,如果你覺得麻煩可以直接請求。
安裝Python庫:pip3 install pdfkit
安裝插件wkhtmltopdf,
https://wkhtmltopdf.org/downloads.html官網地址
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)
我是直接將一個div里面的這個內容全部拿下來,然后拼接一個新的html,將這個新的HTML轉換成PDF。
第二階段就是打開這個pdf,讀取該文檔,將其發送到百度翻譯的框框,獲取翻譯的結果,重新保存
-----------讀取文檔--------
def read_pdf_to_text(self):
fp = open("What’s New In Python 3.8.pdf", "rb") # 根據二進制的方式讀取
# 如果是url
# fp=request.urlopen(url)#網址
# 創建與文檔關聯的解釋器
parser = PDFParser(fp)
# 創建一個pdf文檔對象
doc = PDFDocument()
# 連接解釋器和文檔對象
parser.set_document(doc)
doc.set_parser(parser)
# 對文檔進行初始化
doc.initialize("") # 文件沒有密碼就是空字符串
# 創建一個pdf資源管理器
resouse = PDFResourceManager()
# 創建一個參數分析器
lap = LAParams()
# 創建一個聚合器
device = PDFPageAggregator(resouse, laparams=lap)
# 創建一個頁面解釋器
interpreter = PDFPageInterpreter(resouse, device)
# 開始讀取內容
for page in doc.get_pages():
# 調用頁面解釋器來解釋
interpreter.process_page(page)
# 使用聚合器來獲得內容
layout = device.get_result()
for out in layout:
if hasattr(out, "get_text"):
content = out.get_text()
將文檔讀取,發送到百度翻譯https://fanyi.baidu.com/?aldtype=16047#en/zh
找到輸入框和輸出框的位置
翻譯模塊(復制到微信里,格式有點問題,大家自己修正)
def baidu_fanyi(self, content):
time.sleep(5)
# 找到輸入框的位置,并將內容發送到該位置
self.browser.find_element_by_id('baidu_translate_input').send_keys(content)
time.sleep(5)
# 獲取輸出框的內容
con = self.browser.find_element_by_class_name('output-bd')
# 寫入文件
with open('python3.8.txt', 'a', encoding='utf8') as f:
# 由于content內容帶有回車符,所以不用\n
f.write(content + con.text + '\n')
# 將輸入框清空,等待下一次輸入
self.browser.find_element_by_id('baidu_translate_input').clear()
time.sleep(5)
這是翻譯后輸出的內容
當然還有可以優化加強的部分,比如使用pyqt做個界面,打包成exe就可以當程序用了。有什么建議留言。
感謝各位的閱讀!關于“python爬蟲如何爬取英文文檔存為PDF,在讀取PDF自動翻譯文檔”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。