您好,登录后才能下订单哦!
请求超时!
请点击 重新获取二维码这篇文章给大家分享的是有关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进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
深圳SEO优化公司成都网站关键词优化哪家好泰州百度seo推荐锦州优秀网站设计公司白山关键词排名包年推广公司武汉建网站哪家好庆阳网站建设价格长沙企业网站制作崇左建设网站哪家好焦作百度关键词包年推广多少钱日照百度爱采购伊犁网站建设设计多少钱湛江阿里店铺托管价格海西SEO按天扣费哪家好临汾seo网站优化公司马鞍山网站制作福田建网站公司日照网站搭建多少钱池州优化价格信阳百姓网标王推广哪家好湘潭网站优化同乐网站推广工具多少钱武威SEO按天计费报价平凉网站开发公司广元网站推广工具公司亳州网站设计模板推荐新余百度竞价包年推广多少钱荆州模板推广多少钱平顶山网站推广方案报价四平网站制作哪家好舟山网站设计歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运