爬取 flbook 文檔 需求介紹 由於實習期間被主管委派了下載下來《安徽省助企政策彙編》的任務,去大概搜索瞭解了一下 flbook 網站,發現該網站並不提供已經發佈的文檔的下載渠道(感覺挺莫名其妙的,都公開允許觀看了,為什麼不給下載渠道啊,更何況還是個政府文件,發佈在這種網站上,總覺得哪裡有問題) ...
爬取 flbook 文檔
需求介紹
由於實習期間被主管委派了下載下來《安徽省助企政策彙編》的任務,去大概搜索瞭解了一下 flbook 網站,發現該網站並不提供已經發佈的文檔的下載渠道(感覺挺莫名其妙的,都公開允許觀看了,為什麼不給下載渠道啊,更何況還是個政府文件,發佈在這種網站上,總覺得哪裡有問題),幸好之前有小小的學習過爬蟲的一些基本的操作,經過一晚上的瞎搗鼓之後還真的給搗鼓出來了。
最終成果是爬取到每一頁的圖片文件,並對文件按照順序進行命名,最終再統合進一個PDF,實現文檔的下載(偽)。
代碼與最終成果
from selenium import webdriver
import time
from selenium.webdriver import ChromeOptions
for i in [1236]:
x = str(i)
link = "https://flbook.com.cn/c/ZvzVFHIeih#page/" #網站地址
last = link + x
png = x+".png" #文件命名方式
location = "D:/code/pachong/code/123/" + png #文件地址
option = ChromeOptions()
option.add_argument('--headless')
# browser = webdriver.Chrome(options=option)
# browser.set_window_size(15360, 3600)
driver = webdriver.Chrome('./driver/chromedriver.exe',options=option) #瀏覽器
driver.set_window_size(15360, 3600) #改變視窗大小以得到清晰度更高的圖片
driver.get(last)
time.sleep(3)
# driver.find_element_by_name("pageswitching").click()
# time.sleep(3)
# driver.find_element_by_class_name("btn tooltip btnhover tooltipstered").click()
# time.sleep(3)
# driver.execute_script("document.body.style.zoom='1.2';")
# driver.get_screenshot_as_file(png)
# time.sleep(3)
a = driver.find_element_by_xpath('//*[@class="shadow"]')
a.screenshot(location)
# time.sleep(1)
driver.quit()
學習到的內容
1、在第一次嘗試代碼的運行後獲得到的圖片清晰度太低太低,經過搜索後選擇改變頁面大小的切換之後,清晰度得到了提高。
2、截圖的功能之前並未涉及,但是也不麻煩,雖然網上多是整屏幕進行截屏的教程,但最終還是找到了需要的內容。
3、好久沒碰爬蟲了,不得不說手有點生疏,連xpath需要的內容找起來都有點吃力,就當是個複習了吧。
需要優化的內容
1、首先,這並不是真正的文檔,而是圖片的截取與拼接,雖然組合成PDF並未有太大的區別,但是終究是有區別的。
2、其次,在編寫過程中我試圖先對網頁進行單頁顯示,然後再爬取圖片,但是因為不明原因,單頁顯示按鈕的自動化點擊會出錯,經過大量試錯之後也未得到修正,因而最後得到的都是雙頁顯示的圖片。
3、爬蟲的學習畢竟只是淺嘗輒止,涉及到IP池等深層次的內容便沒有再進行學習了,該程式也是一種暴力爬取的操作,所以所消耗的時間較多,優點是簡化了人工操作,缺點是還可以更進一步優化。
總結
暑假的實習期間也算是有點收穫的,雖然感覺總體偏向文職,但是還是學到了很多東西,也有點點未來的打算了,希望等到下一次實習的時候我的技術可以支撐我擔任技術人員,還是要一直學習下去啊。