selenium python文档_selenium+python实现百度文库word文档抓取
更新这个代码最近又改了一点,另外和其他一些小程序一起放在了一个jupyter notebook里,现在挂在github上面。github现在对jupyter notebook的支持非常的好,甚至可以直接在网上运行。不过这个例子涉及了selenium,所以是没法在github上面跑起来就是了。github页面地址:https://github.com/beneon/smallToolsgithub.com
原先的文章:https://talkpython.fm/episodes/show/142/automating-the-web-with-selenium-and-instapytalkpython.fm
我是最近听podcast 的时候发现这个东西的。简单来说是一个帮你在网页上面点来点去的机器人。InstaPy是用了这个框架来爬instagram,这个比较高大上。我这种水平只希望能用selenium帮忙爬一下百度文库。
百度文库的ppt是没的说的,毕竟已经全部转成了图片,爬也是白瞎。但是我不想再一些Word文档上面浪费我的点数啊。以前用javascript结合autohotkey,勉强能用:路人乙小明:百度文库word文档抓取naive实现zhuanlan.zhihu.com
今天试了试selenium,也可以实现类似的需求,关键这次完全不用任何鼠标操作了。
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import re
browser = webdriver.Chrome()
browser.get('https://wenku.baidu.com/view/xxxlorem ipsumxxxx.html')
这一段是导入selenium,打开一个chrome浏览器webdriver,这个webdriver需要自己额外下载放到python的目录里面。具体操作参见:1. Installation - Selenium Python Bindings 2 documentationselenium-python.readthedocs.io
上面的是selenium python版本的用法,除了driver的安装还有很多其他有用的内容,自己看去。
pageInput = browser.find_element_by_class_name("page-input")
pageInput.clear()
pageInput.send_keys("1")
pageInput.send_keys(Keys.RETURN)
elem = browser.find_elements_by_class_name("reader-page")[0]
subelems = elem.find_elements_by_class_name("reader-word-layer")
这里是转到第1页,顺便获取第一页下面的所有reader-word-layer类div。这个class的名称,包括前面的reader-page自己用chrome分析一下百度文库的文档就知道了。
# 行融合部分开始
print(lineMerging(subelems))
# 这个是引用行融合
reTopVal = re.compile(r'top: (\d+)px')
def getYpos(e):
"""获取一个字符block的style里面的top属性,相关的regex在函数外面已经compile完成"""
mo = reTopVal.search(e.get_attribute('style'))
return mo.group(1)
def lineMerging(elems):
"""根据位置top信息判断是否属于一行,如果是新的一行加上换行符以后再连接文字"""
topTemp = ""
rstString = ""
for e in elems:
if topTemp == getYpos(e):
rstString += e.text
else:
topTemp = getYpos(e)
rstString += '\n' + e.text
rstString=rstString.replace('\n','{newline}')
rstString=rstString.replace('\n','')
rstString=rstString.replace('{newline}','\n')
return rstString
每一个reader-word-layer的div都有一个style属性,里面标明了这个div的top属性。同一行的文本top都一样,所以根据top可以将同行的div内文字合并。
另外和pdf一样,会有硬换行。百度文库的特点是,如果是真的换行,是‘ \n’(两个空格加一个换行符),而硬换行则是单纯的'\n'。所以比较蠢的办法就是做三次全局文本替换……
上面的代码我在jupyter notebook里面跑过没什么大问题
selenium python文档_selenium+python实现百度文库word文档抓取相关推荐
- ubuntu右键点击没有新建文档_如何复制百度文库豆丁文档
只需要浏览器,复制在线文档平台的内容生成文档的技巧.这里的浏览器需要有开发者工具选项,现在一般的浏览器如谷歌.火狐.360浏览器等都自带这个.下面以360安全浏览器为例. 一.以搜索引擎爬虫的身份访问 ...
- 二十一、Python爬取百度文库word文档内容
@Author:Runsen 百度文库在我们需要查找复制一些文档的时候经常用到,下载要收费,开会员,一个字都不给复制,这个时候初学python的小伙伴肯定有个写个百度文库爬虫的想法,这里我给各位分享一 ...
- js预览本地word文档_怎么免费下载百度文库付费文档?
我们都知道百度文库中的Word文档,免费的少,大部分是需要下载券的,或者需要开通vip才能下载的!而这些券和vip都是需要钱买的,那我们有什么办法,能任意使用.下载需要的文档呢?下面我来分享一下我的方 ...
- 还敢白嫖吗?利用插件破解百度文库下载文档,被判赔200万元!还不收手吗?
百度文库,是百度于2009年11月12日发布的供网友在线分享文档的平台. 百度文库的文档由百度用户上传,经过百度的审核后方可发布,支持其他网友在线阅读和下载. 百度文库的文档内容非常全面,包括了教学资 ...
- 使用python中的Selenium爬取百度文库word文章
参考文章:Python3网络爬虫(九):使用Selenium爬取百度文库word文章,链接为: https://blog.csdn.net/c406495762/article/details/723 ...
- Python+Tesseract-OCR识别图片文字并保存到word文档
目录 使用Python+Tesseract-OCR识别图片文字并保存到word文档 安装Tesseract-OCR 配置Tesseract-OCR 通过CMD验证Tesseract-OCR工作 安装p ...
- Python 将excel中的选择题 导入到word文档中
Python 将excel中的选择题 导入到word文档中 0x00 昨天,我的老师给我们一个包含600道关于比赛的选择题和判断题的excel文档,要我们整理成指定格式的word文档以后交给他.我看着 ...
- python find()效率_基于python分别采用同步与异步(协程)方式抓取时光网TOP100电影...
欢迎各位小哥哥小姐姐阅读本的文章,对大家学习有帮助,请点赞加关注哦!!!!!!!!!! 您的点赞和关注将是我持续更新的动力呢.^v^ 有不懂的问题可以私聊我哦! 如题,同步运行就是python按照代码 ...
- Python爬虫编程思想(6):实战案例:抓取所有的网络资源
Python爬虫编程思想(7):实战案例:抓取博客文章列表 到现在为止,我们已经对网络爬虫涉及到的基本知识有了一个初步的了解.本文会编写一个简单的爬虫应用,以便让读者对爬虫有一个基本的认识.本节要编写 ...
最新文章
- 如果有电脑——计算机达人成长之路(36)
- 【星·企业】竞逐卫星互联网“新基建”,「九天微星」完成2.7亿元B 轮融资
- 十一.python面向对象(接口)abstractmethod,ABCMeta
- Windows 下直接运行 Linux的Live CD版的方法
- tarjan求LCA模板
- strconv---用来基本类型之间的转换
- 手机java软件_浅谈软件开发就业前景
- idea实现抽象类的所有抽象方法_父类子类抽象类,super final 重写方法,搞懂继承中复杂的知识点
- mysql yum 升级_CentOS 7中升级MySQL 5.7.23的坑与解决方法
- VS 2010 安装 .net framework2.0/3.0/3.5
- Centos6.5 安装 Mysql-5.6.41
- 自定义类加载器的父类为什么是AppClassLoader?
- [编辑器]_从 VI 编辑器谈 FreeBSD 的前世今生以及编辑器本质
- H3C交换机常用命令大全
- 夜晚网速变慢与网站服务器开机数量减少有关,【网络】网速慢的原因与对策
- 无法将数值CLSID写入 \Software\Classes\PROTOCOLS\Handler\ms-help。
- JavaScript节点操作、删除节点
- 设计模式 - 学习笔记 - 适配器模式AdapterPattern
- Linux下Oracle 11g安装(3)—— Oracle安装篇
- 金庸小说数据化中的部分题目答案
热门文章
- Java正则之Unicode属性匹配的那些事
- linux网卡顺序问题,linux网卡绑定及网卡顺序变更测试.docx
- 网页版本的飞行日志分析平台是_一个轻便的实时日志收集平台wslog
- Spark_Sql50题(DataFrame)
- php 单例模式 构函数,PHP设计模式——单例模式(Singleton Pattern)
- c语言switch scanf语句,c语言switch语句 谢谢·!~!~
- 雷军宣布:启动小米成立以来最大组织架构变革(附内部邮件原文)
- Datrium公司以几近疯狂的方式提升速度表现
- 修改同一张表的同一个字段的两个不同的值。
- 模式窗口showModalDialog的用法总结