前言:本方法需要手动得到某文档的单篇文件,而不是基于爬虫的,具体原因正文会讲。因此,如果是想学爬虫的话,本文就没有必要再看下去了。另外,本文主要是扒中文的,如果原文是非中文,则需要自己写正则表达式。
一、使用条件
1、必需安装Python
2、要会写正则
二、过程分析
1、ba qu网页,最先想到的肯定是爬虫,那么肯定就想用requests方法,我们不妨试试。
import requests
from bs4 import BeautifulSoup as bs
url = 'https://wenku.baidu.com/link?url=iki4lWxb0vMNHUlIxZECH3ldyCOhsioFIQpQcoauVB6kLb1O_lm8AldXh3gjniyRQVqhxzeiuA-U7iRqlZWSugsbOrRjNUy5iB3lp6TJ1HwMLf3Ks5KgsskdijPQTsLX'
r = requests.get(url)
soup = bs(r.text, 'lxml')
text = soup.find_all('p')
for line in text:
print(line.string)
上述代码得到的结果如下所示(中间部分省略)
读后感
读《伊索寓言》有感
伟大的文学家钱钟书先生(或者称作钱爷爷要中
听点,但我又担心别人笑话我是故意向名人套近乎,
管别人怎么说呢,不是常说走自己的路让别人去说
吗?我是我,他是他,这八竿子打不着的事。如果有
人吃撑了,非要乱嚼舌头,那我也没办法,总不能把
别人的嘴密封起来吧,有的人就算你把嘴给他密封住
他也会用鼻子发音来诋毁你,
…………
还念着说:
“好香的屎啊!
”
,
我们不
关于作者
柳含露
文库新人
文档
粉丝
等级
对比原文档可以发现,用requests方法只能得到文档第一页的内容。
经过笔者的多种尝试,不仅requests方法没有用,而且就算是用Webdriver模拟登录,某文档设置的反爬虫也会把人搞死。当然,如果有大神能用requests就可以搞定,那么还请救救孩子!
2、既然requests神器用不了,那我们就自力更生,用最原始的方法,F12。
下面就可以用Python正则表达式来解决了。
import re
from docx import Document
# 正则,一般的中文文档都可以用此模式
re_pattern = re.compile(
u">([《》,、。-;\'\"\”\“]*[\u4e00-\u9fa5]+[《》,、。-;\'\"\”\“]*)<|>(\d+)<")
# 加粗斜体内容代表中文字符
# 打开用“编辑网页”得到的内容所保存的文档
f = open(r'ori.txt', encoding='utf-8')
s = f.read()
# 匹配,返回元组
res = re.findall(re_pattern, s)
txt = list()
for tup in res:
# 把元组转为字符串
s = ''.join(tup)
txt.append(s)
# 连接所有字符串组成文档
new_txt = ''.join(txt)
# 保存到word当中
doc = Document()
doc.add_paragraph(new_txt)
doc.save(r'out.docx')
f.close()
三、总结
本文用的方法没什么难的,适用范围也不是很大,仅作为一种平时能用到的小工具的代码参考,如果有更好更智能的baipiao方法,希望各路大神不吝指教!