記一次還能夠搶救一下的爬蟲私活,求接盤!

前言

最近接了一個爬蟲的私活,收益頗豐。自認爲對爬蟲掌握的還算不錯,爬過不少國內外網站,
數據超過百萬,應對過封IP、設驗證碼、假數據、強制登陸等反爬蟲手段。因而乎,我堅決果斷的接下了該活。css

可是進行了一半,我遇到了困難,寫這篇文章但願可以找到感興趣的朋友一塊兒解決,一塊兒分享勞動成果。若是到期沒有解決的話,就當一次經歷記錄一下也罷。html

項目需求

一個相似百度文庫的網站,要求給出url,得到文章,以Word形式保存下來。保持格式不變python

clipboard.png

個人進展和思路

我之前爬數據都是以文本的形式得到數據,而後清洗,保存數據庫。可是此次須要保存到word,這不難,難在要求格式不變。我打算根據元素的css屬性,設置在word裏面的格式web

獲取文本和樣式

首先我使用我最熟悉的python+selenium+chrome組合,無頭模式啓動不用打開瀏覽器比較方便chrome

def open_brower_headless():
    chromeOptions = webdriver.ChromeOptions()
    chromeOptions.add_argument("headless")
    browser = webdriver.Chrome(chrome_options=chromeOptions)
    return browser

文章部分是一個iframe框,經過selenium的switch_to_frame()方法切換到iframe元素,而後就是一系列的定位取值操做,很容易的取到了文章的文本。文章都是以許多<p>標籤組合在一塊兒的。經過絕對定位控制格式。
(爬蟲手法詳情https://segmentfault.com/a/11...數據庫

clipboard.png

我利用selenium的value_of_css_property()方法能夠得到元素的屬性(font-familytopfont-size),這個方法比較強,不只能夠得到行內樣式的css,還能夠得到外嵌式的css,因此我不用擔憂它的樣式寫在css文件裏。這樣每一行的格式我就獲得了。segmentfault

1. 怎麼換行?對比該元素和上一個元素的top屬性的值,若是不同就換行,高度不同一定不在一行,很合理。
2. 文字大小?元素的font-size的大小換算公式 ($/14 +0.5),差很少匹配docx裏面的run.font.size的值windows

docx寫入word

python庫裏面操做word使用的是docxdocx對word 的讀寫有一套完整的方法。好比:添加文字,設置字體,顏色,大小,段落,表格,添加圖片。
docx的使用也很是簡單,主要分爲三級:file >paragraph >run,下面簡單介紹一下:瀏覽器

file = docx.Document()                #新建文件
f = file.add_paragraph("添加段落")     #添加段落
run = f.add_run("追加文字")            #追加文字
run.font.color.rgb = RGBColor(0,0,1)  #設置字體顏色
run.font.size = Pt(36)                #設置字體大小
run.font.name = "宋體"                #設置字體
run._element.rPr.rFonts.set(qn('w:eastAsia'), '宋體')
run.add_break()                       #換行
file.save("d.docx")                   #保存文件

至今進度

如此我完成了一個簡單word的爬取和保存。less

clipboard.png

瓶頸

可是我遇到了更復雜的格式,就是表格。F12後發現表格的邊框就是一個圖片! 至此我不知道怎麼進行下去了。開始我覺得識別圖片後我能夠利用doxc 插入表格,根據文字的位置,插入在對應的表格裏,可是我發現有的文章還有其餘圖片。因此我不能遇到圖片就將下面的文字按照表格里面的文字處理。

clipboard.png

其餘辦法

發現這條路彷佛走不通後,我試了其餘辦法,就是pandoc,這是一個文檔轉化工具,windows下安裝後經過輸入命令來轉化文檔。好比將a.html轉化爲b.docx

pandoc  -s a.html -o b.docx

可是獲得得word 格式尚未我上面程序寫的好,應該是我不太會用,網上對pandoc評價很高,幾乎神器。
我嘗試將html先轉化爲pdf,而後再轉word.可是失敗了,須要安裝pdf 引擎,並且須要配中文之類的,總之我沒有成功,不知道轉化成pdf後再轉化word 它可否識別並插入表格。而不是背景圖。
知情人請告知,感激涕零。

我發現文章結構的class名和百度文庫裏的同樣,這是經過百度富文本編輯器編輯的吧?,若是是這樣經過這個富文本編輯器反編輯一下是否可行?

後面的話

距離項目測試版交期還有3天,搞不定這個問題話就黃了,若是有朋友可以解決或者有思路的話能夠一塊兒完成,報酬四位數。一塊兒吃雞,真不捨得放棄!

相關文章
相關標籤/搜索