国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

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

alanoddsoff / 908人閱讀

摘要:前言最近接了一個爬蟲的私活,收益頗豐。項目需求一個類似百度文庫的網站,要求給出獲得文章,以形式保存下來。但是這次需要保存到這不難,難在要求格式不變。文章都是以許多標簽組合在一起的。知情人請告知,感激不盡。

前言

最近接了一個爬蟲的私活,收益頗豐。自認為對爬蟲掌握的還算不錯,爬過很多國內外網站,
數據超過百萬,應對過封IP、設驗證碼、假數據、強制登錄等反爬蟲手段。于是乎,我毫不猶豫的接下了該活。

但是進行了一半,我遇到了困難,寫這篇文章希望能夠找到感興趣的朋友一起解決,一起分享勞動成果。如果到期沒有解決的話,就當一次經歷記錄一下也罷。

項目需求

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

我的進展和思路

我以前爬數據都是以文本的形式獲得數據,然后清洗,保存數據庫。但是這次需要保存到word,這不難,難在要求格式不變。我打算根據元素的css屬性,設置在word里面的格式。

獲取文本和樣式

首先我使用我最熟悉的python+selenium+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元素,然后就是一系列的定位取值操作,很容易的取到了文章的文本。文章都是以許多

標簽組合在一起的。通過絕對定位控制格式。
(爬蟲手法詳情https://segmentfault.com/a/11...)

我利用selenium的value_of_css_property()方法可以獲得元素的屬性(font-family、top、font-size),這個方法比較強,不僅可以獲得行內樣式的css,還可以獲得外嵌式的css,所以我不用擔心它的樣式寫在css文件里。這樣每一行的格式我就得到了。

1. 怎么換行?對比該元素和上一個元素的top屬性的值,如果不一樣就換行,高度不一樣必定不在一行,很合理。
2. 文字大?。吭氐?b>font-size的大小換算公式 ($/14 +0.5),差不多匹配docx里面的run.font.size的值

docx寫入word

python庫里面操作word使用的是docx,docx對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的爬取和保存。

瓶頸

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

其他辦法

發現這條路似乎走不通后,我試了其他辦法,就是pandoc,這是一個文檔轉化工具,windows下安裝后通過輸入命令來轉化文檔。比如將a.html轉化為b.docx

pandoc  -s a.html -o b.docx

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

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

后面的話

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

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/43617.html

相關文章

  • 一次奇怪debug:Tomcat部署網站每一個頁面第一次打開404刷新后才正常顯示

    摘要:第二次嘗試以為是打包過程中出現了問題,清理項目重新打,然后重新部署到上,仍然沒有解決問題。于是我在所有目錄下都找了一遍,果然在目錄下發現了一個項目的同名文件關,刪除之。重新把新的包到目錄下后重啟。 序 不久前畢設網站的第三版上線,然后我遇到了一個奇怪的bug: 訪問頁面的時候,第一次打開404,必須F5刷新后才能正常顯示 簡直迷 第一次嘗試 最開始以為是瀏覽器緩存沒有清理【思路大概是...

    CompileYouth 評論0 收藏0
  • 【FAILED】一次Python后端開發面試經歷

    摘要:正確的思路是等概率隨機只取出共個數,每個數出現的概率也是相等的隨機輸出把一段代碼改成,并增加單元測試。代碼本身很簡單,即使沒學過也能看懂,改后的代碼如下但是對于單元測試則僅限于聽過的地步,需要用到,好像也有別的模塊。 在拉勾上投了十幾個公司,大部分都被標記為不合適,有兩個給了面試機會,其中一個自己覺得肯定不會去的,也就沒有去面試,另一個經歷了一輪電話面加一輪現場筆試和面試,在此記錄一下...

    kohoh_ 評論0 收藏0
  • 一次小程序之旅

    摘要:用戶綁定的邏輯主要復雜在既需要考慮微信本身的接口在不同情況下提供的數據不同,另外一方面就是考慮本身用戶模塊的業務邏輯問題。針對每一節課以及每一節系列課程生成小程序太陽碼主要涉及到幾個細節問題。 感覺已經好久沒寫程序了,最近這段時間,一方面是學習了python,然后折騰了scrapy框架,用python寫了下守護進程程序監聽任務以及用redis做隊列任務通信,并開進程來處理爬蟲任務。以上...

    不知名網友 評論0 收藏0

發表評論

0條評論

alanoddsoff

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<