久久国产乱子伦精品免费M,亚洲一区二区三区91,欧美国产在线视频,国产精品视频久久

python網絡爬蟲教程 | 使用Python scrapy來進行一次爬蟲實驗吧!

這篇文章是一篇非常好的Python網絡爬蟲教程實戰項目。總的來說,爬蟲是Python能夠比較簡單實現的功能,適合新手練習的時候來用。

任務

抓取四川大學公共管理學院官網(http://ggglxy.scu.edu.cn)所有的新聞咨詢.

實驗流程

1.確定抓取目標.
2.制定抓取規則.
3.'編寫/調試'抓取規則.
4.獲得抓取數據

1.確定抓取目標

我們這次需要抓取的目標為四川大學公共管理學院的所有新聞資訊.于是我們需要知道公管學院官網的布局結構.

python網絡爬蟲教程 | 使用Python scrapy來進行一次爬蟲實驗吧!

這里我們發現想要抓到全部的新聞信息,不能直接在官網首頁進行抓取,需要點擊"more"進入到新聞總欄目里面.

python網絡爬蟲教程 | 使用Python scrapy來進行一次爬蟲實驗吧!

我們看到了具體的新聞欄目,但是這顯然不滿足我們的抓取需求:?當前新聞動態網頁只能抓取新聞的時間,標題和URL,但是并不能抓取新聞的內容.所以我們想要需要進入到新聞詳情頁抓取新聞的具體內容.

2.制定抓取規則

通過第一部分的分析,我們會想到,如果我們要抓取一篇新聞的具體信息,需要從新聞動態頁面點擊進入新聞詳情頁抓取到新聞的具體內容.我們點擊一篇新聞嘗試一下

python網絡爬蟲教程 | 使用Python scrapy來進行一次爬蟲實驗吧!

們發現,我們能夠直接在新聞詳情頁面抓取到我們需要的數據:標題,時間,內容.URL.

好,到現在我們清楚抓取一篇新聞的思路了.但是,如何抓取所有的新聞內容呢?
這顯然難不到我們.

python網絡爬蟲教程 | 使用Python scrapy來進行一次爬蟲實驗吧!

我們在新聞欄目的最下方能夠看到頁面跳轉的按鈕.那么我們可以通過"下一頁"按鈕實現抓取所有的新聞.

那么整理一下思路,我們能夠想到一個顯而易見的抓取規則:
通過抓取'新聞欄目下'所有的新聞鏈接,并且進入到新聞詳情鏈接里面抓取所有的新聞內容.

3.'編寫/調試'抓取規則

為了讓調試爬蟲的粒度盡量的小,我將編寫和調試模塊糅合在一起進行.
在爬蟲中,我將實現以下幾個功能點:

1.爬出一頁新聞欄目下的所有新聞鏈接
2.通過爬到的一頁新聞鏈接進入到新聞詳情爬取所需要數據(主要是新聞內容)
3.通過循環爬取到所有的新聞.

分別對應的知識點為:

1.爬出一個頁面下的基礎數據.
2.通過爬到的數據進行二次爬取.
3.通過循環對網頁進行所有數據的爬取.

話不多說,現在開干.

3.1爬出一頁新聞欄目下的所有新聞鏈接

python網絡爬蟲教程 | 使用Python scrapy來進行一次爬蟲實驗吧!

通過對新聞欄目的源代碼分析,我們發現所抓數據的結構為

python網絡爬蟲教程 | 使用Python scrapy來進行一次爬蟲實驗吧!

那么我們只需要將爬蟲的選擇器定位到(li:newsinfo_box_cf),再進行for循環抓取即可.

編寫代碼

python網絡爬蟲教程 | 使用Python scrapy來進行一次爬蟲實驗吧!

測試,通過!

python網絡爬蟲教程 | 使用Python scrapy來進行一次爬蟲實驗吧!

3.2通過爬到的一頁新聞鏈接進入到新聞詳情爬取所需要數據(主要是新聞內容)

現在我獲得了一組URL,現在我需要進入到每一個URL中抓取我所需要的標題,時間和內容,代碼實現也挺簡單,只需要在原有代碼抓到一個URL時進入該URL并且抓取相應的數據即可.所以,我只需要再寫一個進入新聞詳情頁的抓取方法,并且使用scapy.request調用即可.

編寫代碼

python網絡爬蟲教程 | 使用Python scrapy來進行一次爬蟲實驗吧!

整合進原有代碼后,有:

python網絡爬蟲教程 | 使用Python scrapy來進行一次爬蟲實驗吧!

測試,通過!

python網絡爬蟲教程 | 使用Python scrapy來進行一次爬蟲實驗吧!

這時我們加一個循環:


python網絡爬蟲教程 | 使用Python scrapy來進行一次爬蟲實驗吧!

加入到原本代碼:

python網絡爬蟲教程 | 使用Python scrapy來進行一次爬蟲實驗吧!

測試:

python網絡爬蟲教程 | 使用Python scrapy來進行一次爬蟲實驗吧!

抓到的數量為191,但是我們看官網發現有193條新聞,少了兩條.
為啥呢?我們注意到log的error有兩條:
定位問題:原來發現,學院的新聞欄目還有兩條隱藏的二級欄目:
比如:

python網絡爬蟲教程 | 使用Python scrapy來進行一次爬蟲實驗吧!

對應的URL為

python網絡爬蟲教程 | 使用Python scrapy來進行一次爬蟲實驗吧!

URL都長的不一樣,難怪抓不到了!
那么我們還得為這兩條二級欄目的URL設定專門的規則,只需要加入判斷是否為二級欄目:

python網絡爬蟲教程 | 使用Python scrapy來進行一次爬蟲實驗吧!

組裝原函數:

python網絡爬蟲教程 | 使用Python scrapy來進行一次爬蟲實驗吧!

測試:

python網絡爬蟲教程 | 使用Python scrapy來進行一次爬蟲實驗吧!

4.獲得抓取數據

python網絡爬蟲教程 | 使用Python scrapy來進行一次爬蟲實驗吧!

文章到這里就結束了,不知道大家對于Python網絡爬蟲教程有了一個什么樣的認識呢?對你而言這個功能實用度又如何呢?

相關新聞

歷經多年發展,已成為國內好評如潮的Linux云計算運維、SRE、Devops、網絡安全、云原生、Go、Python開發專業人才培訓機構!

    1. 主站蜘蛛池模板: 渝北区| 通渭县| 威远县| 大连市| 仪征市| 大荔县| 浙江省| 和平县| 蓝田县| 玛沁县| 团风县| 奉贤区| 万山特区| 安平县| 邛崃市| 安福县| 久治县| 进贤县| 岳普湖县| 灵璧县| 阿拉善右旗| 金塔县| 牡丹江市| 崇义县| 弋阳县| 五大连池市| 博罗县| 于都县| 德惠市| 韶山市| 东宁县| 中江县| 瑞昌市| 尖扎县| 天台县| 莱阳市| 祁门县| 六安市| 鄂尔多斯市| 永泰县| 庆云县|