爬取 flbook 文檔

来源:https://www.cnblogs.com/tlott/archive/2022/08/18/16600567.html
-Advertisement-
Play Games

爬取 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

學習到的內容

1、在第一次嘗試代碼的運行後獲得到的圖片清晰度太低太低,經過搜索後選擇改變頁面大小的切換之後,清晰度得到了提高。

2、截圖的功能之前並未涉及,但是也不麻煩,雖然網上多是整屏幕進行截屏的教程,但最終還是找到了需要的內容。

3、好久沒碰爬蟲了,不得不說手有點生疏,連xpath需要的內容找起來都有點吃力,就當是個複習了吧。

需要優化的內容

1、首先,這並不是真正的文檔,而是圖片的截取與拼接,雖然組合成PDF並未有太大的區別,但是終究是有區別的。

2、其次,在編寫過程中我試圖先對網頁進行單頁顯示,然後再爬取圖片,但是因為不明原因,單頁顯示按鈕的自動化點擊會出錯,經過大量試錯之後也未得到修正,因而最後得到的都是雙頁顯示的圖片。

3、爬蟲的學習畢竟只是淺嘗輒止,涉及到IP池等深層次的內容便沒有再進行學習了,該程式也是一種暴力爬取的操作,所以所消耗的時間較多,優點是簡化了人工操作,缺點是還可以更進一步優化。

總結

暑假的實習期間也算是有點收穫的,雖然感覺總體偏向文職,但是還是學到了很多東西,也有點點未來的打算了,希望等到下一次實習的時候我的技術可以支撐我擔任技術人員,還是要一直學習下去啊。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • SOLID 原則是面向對象編程和麵向對象設計的五個基本原則。當這些原則被一起應用時,它們使得一個程式員開發一個容易進行軟體維護和擴展的系統變得更加可能。 ...
  • 消息隊列中間件是分散式系統中重要的組件,主要解決應用耦合,非同步消息,削峰填谷等問題。實現高性能、高可用、可伸縮和最終一致性架構。 ...
  • 7.1 IOC (inversion of control) – 反轉控制 1) 之前我們在學JSP的時候,在CoreServlet中,我們創建xxxDao對象是如何創建的? IXxxDao xxxDao = new XxxDaoImpl( ) ; 這種寫法new了一個XxxDaoImpl類,這樣使 ...
  • 10. 什麼是ThreadLocal ThreadLocal翻譯成中文比較準確的叫法應該是:線程局部變數。或稱為 線程本地變數 這個玩意有什麼用處?先解釋一下,在併發編程的時候,一個單例模式的類的屬性,如果不做任何處理(是否加鎖,或者用原子類)其實是線程不安全的,各個線程都在操作同一個屬性,比如Co ...
  • 8. 過濾器 8.1 編寫字元過濾器 CharacterEncodingFilter 複製項目mymvc4,新建項目mymvc5 package com.hy.filter; import java.io.IOException; import javax.servlet.Filter; impor ...
  • 4. 業務層 4.1 MVC模型 MVC:Model(模型),View(視圖),Controller(控制器) 視圖層:用於做數據的展示以及和用戶交互的一個界面=>jsp 控制層:能夠接受客戶端的請求並且進行請求轉發,具體的業務功能還是需要藉助模型層組件來完成。CoreServlet => Disp ...
  • Json格式在後臺服務中的重要性就不多說了,直入正題。首先引入pom文件,這裡使用的是1.2.83版本 1 <dependency> 2 <groupId>com.alibaba</groupId> 3 <artifactId>fastjson</artifactId> 4 <version>1.2 ...
  • 如題:使用三個線程交替列印ABC,直至100次代碼實戰 方法一: 使用notify()、wait()方法 public class PrintAbc { /** * 喚醒線程的狀態值 state: threadA = 0, threadB = 1, threadC =2, */ int state ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...