日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

爬虫(1)

發布時間:2024/4/17 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 爬虫(1) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前段時間,結合日常需要,寫了一個小的爬蟲項目。這里稍作小結一下。

關于數據來源

信息在哪里?一個地區重要的文化工作,最終都會在該地區文化部門官方網站發布相關信息。

對某個具體使用者來說,并不需要知道網站發布的所有信息。舉個例子,自己只對公共文化服務相關信息有興趣,網站中的其他信息,如文化市場、非物質文化遺產、旅游、文物保護等,對自己來說就不是關注對象。

如何只看自己想看的信息?這可以從查找信息的過程中找出方法。假設,想了解16個市在公共文化服務方面的信息,會怎么做?首先,會打開省文化和旅游廳相關欄目看當前發布的信息;然后,逐個打開每個市網站相關欄目查看。可見,查找信息是一個重復的過程。

一般情況下,涉及重復的過程,大多可以實現自動化。我們的爬蟲就是將這個過程自動化。目前,已經初步實現的功能有:

(1)從15個市級文化管理部門網站的指定欄目,自動抓取新聞消息的標題、鏈接、日期。【這里為什么是15個市?因為合肥市局網站信息比較難抓。百度搜索實現了針對該網站的信息抓取,必應搜索、搜狗搜索等未實現。】

(2)將收集到的信息,保存成數據文件,并據此生成網頁。

(3)將生成的網頁,利用微信發給指定朋友或自己,這里也可以使用linux下的mail程序,發送到指定郵箱。

關于總體設計

實際上,這個項目一開始時,自己并沒有非常明確的總體設計,現在看到目錄結構,是在基本功能完成以后逐漸整理得來的,編寫時隨意性較大,基本是想到什么功能就寫到哪里,發現不對時,就對代碼進行重構。

├── city_lv │?? ├── __init__.py │?? ├── luanweb.py │?? ├── maanshanweb.py │?? └── xuanchengweb.py ├── county_lv │?? ├── changfengweb.py │?? └── __init__.py ├── libraries │?? ├── ahslibweb.py │?? └── __init__.py ├── LICENSE ├── province_lv │?? ├── anhuiweb.py │?? └── __init__.py ├── README.md ├── templates │?? ├── base.html ├── tests │?? ├── index.html │?? ├── msg.txt │?? ├── send_msg.py │?? ├── send.sh │?? ├── test.py │?? └── txt2html.py └── utils└── webmonkey.py

雖然沒有什么明確應該是什么樣的,但對項目的核心功能相對清楚,就是從各個文化機構的網站抓取信息。

具體實現時,每個數據源對應一個獨立的爬蟲程序,然后在一個總的調度程序中循環調用。

關于爬蟲框架

這里沒有使用現成的爬蟲框架,如scrapy,只是針對需求,封裝了一個非常簡單的類。

為了減少程序中的重復代碼,在編寫過程中,經過幾次重構,自己封裝了一個類webmonkey.py,用于處理抓取時一些共同操作,包括打開網站、返回一個包括網站源碼的響應對象、顯示抓取到的信息等。

針對每個具體網站,編寫了Web類,繼承自通用類webmonkey。在其基礎上,改動網站url和網頁信息提取規則。

關于數據保存

程序中沒有實現數據保存的功能,而是利用操作系統提供的管道(“|”)命令,將程序輸出到本地文件進行保存。

在數據量比較小的情況下,或用于演示時,用這種方法還可以。如果考慮長期運行,肯定需要使用數據庫。但是,這個問題不是很大,自己在另外一個小項目中已經封裝過一個sqlite3的類,需要時可以拿過來改改。

關于數據展示

為了展示抓取信息,寫了一個網頁生成的模塊txt2html.py。基本的想法是,先寫一個網頁模板,然后在這個模板基礎上,將抓取的信息寫入網頁文件。另外,還寫了一個模塊,可以將HTML文件通過微信發送給自己。

未解決問題

現在還有幾個問題沒有解決。第一,第一條信息問題。部分站點同一天會更新多條信息,目前只是抓取各網站相應欄目的第一條信息。第二,接著第一個問題而來的是數據量大了之后的數據存儲問題。第三,網頁設計問題。第四,通用性問題。

使用方法

git clone http://github.com/luckyele/socnews.git

cd socnews/tests/

  • python test.py > msg.txt

  • python txt2html.py

  • 轉載于:https://www.cnblogs.com/py520ziyi/p/10556044.html

    總結

    以上是生活随笔為你收集整理的爬虫(1)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。