前言:本方法需要手動得到某文檔的單篇文件渣玲,而不是基于爬蟲的逗概,具體原因正文會講。因此忘衍,如果是想學(xué)爬蟲的話逾苫,本文就沒有必要再看下去了。另外枚钓,本文主要是扒中文的铅搓,如果原文是非中文,則需要自己寫正則表達(dá)式搀捷。
一星掰、使用條件
1、必需安裝Python
2嫩舟、要會寫正則
二氢烘、過程分析
1、ba qu網(wǎng)頁家厌,最先想到的肯定是爬蟲播玖,那么肯定就想用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)
上述代碼得到的結(jié)果如下所示(中間部分省略)
讀后感
讀《伊索寓言》有感
偉大的文學(xué)家錢鐘書先生(或者稱作錢爺爺要中
聽點(diǎn)蜀踏,但我又擔(dān)心別人笑話我是故意向名人套近乎,
管別人怎么說呢掰吕,不是常說走自己的路讓別人去說
嗎果覆?我是我,他是他殖熟,這八竿子打不著的事局待。如果有
人吃撐了,非要亂嚼舌頭,那我也沒辦法燎猛,總不能把
別人的嘴密封起來吧恋捆,有的人就算你把嘴給他密封住
他也會用鼻子發(fā)音來詆毀你,
…………
還念著說:
“好香的屎爸乇痢沸停!
”
,
我們不
關(guān)于作者
? ? ? ? ? ? ? ? ? ? 柳含露
? ? ? ? ? ? ? ? ? ? 文庫新人
文檔
粉絲
等級
對比原文檔可以發(fā)現(xiàn)昭卓,用requests方法只能得到文檔第一頁的內(nèi)容愤钾。
經(jīng)過筆者的多種嘗試,不僅requests方法沒有用候醒,而且就算是用Webdriver模擬登錄能颁,某文檔設(shè)置的反爬蟲也會把人搞死。當(dāng)然倒淫,如果有大神能用requests就可以搞定伙菊,那么還請救救孩子!
2敌土、既然requests神器用不了镜硕,那我們就自力更生,用最原始的方法返干,F(xiàn)12兴枯。
下面就可以用Python正則表達(dá)式來解決了躺坟。
import re
from docx import Document
# 正則,一般的中文文檔都可以用此模式
re_pattern = re.compile(
? ? u">([《》该默,瞳氓、。-栓袖;\'\"\”\“]*[\u4e00-\u9fa5]+[《》匣摘,、裹刮。-音榜;\'\"\”\“]*)<|>(\d+)<")
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? # 加粗斜體內(nèi)容代表中文字符
# 打開用“編輯網(wǎng)頁”得到的內(nèi)容所保存的文檔
f = open(r'ori.txt', encoding='utf-8')
s = f.read()
# 匹配,返回元組
res = re.findall(re_pattern, s)
txt = list()
for tup in res:
? ? # 把元組轉(zhuǎn)為字符串
? ? s = ''.join(tup)
? ? txt.append(s)
# 連接所有字符串組成文檔
new_txt = ''.join(txt)
# 保存到word當(dāng)中
doc = Document()
doc.add_paragraph(new_txt)
doc.save(r'out.docx')
f.close()
三捧弃、總結(jié)
本文用的方法沒什么難的赠叼,適用范圍也不是很大擦囊,僅作為一種平時(shí)能用到的小工具的代碼參考,如果有更好更智能的baipiao方法嘴办,希望各路大神不吝指教瞬场!