Python爬蟲入門這一篇就夠了

Python爬蟲入門這一篇就夠了

何謂爬蟲

所謂爬蟲,就是按照一定的規則,自動的從網絡中抓取信息的程序或者腳本。萬維網就像一個巨大的蜘蛛網,我們的爬蟲就是上面的一個蜘蛛,不斷的去抓取我們需要的信息。

爬蟲三要素

抓取

分析

存儲

基礎的抓取操作

1、urllib

在Python2.x中我們可以通過urllib 或者urllib2 進行網頁抓取,但是再Python3.x 移除了urllib2。只能通過urllib進行操作


Python爬蟲入門這一篇就夠了


帶參數的urllib

url = 'https://blog.csdn.net/weixin_43499626'

url = url + '?' + key + '=' + value1 + '&' + key2 + '=' + value2

2、requests

requests庫是一個非常實用的HTPP客戶端庫,是抓取操作最常用的一個庫。Requests庫滿足很多需求


Python爬蟲入門這一篇就夠了


需要登錄的情況下

1、表單提交登錄

向服務器發送一個post請求並攜帶相關參數,將服務器返回的cookie保存在本地,cookie是服務器在客戶端上的“監視器”,記錄了登錄信息等。客戶端通過識別請求攜帶的cookie,確定是否登錄


Python爬蟲入門這一篇就夠了


2、cookie登錄

我們可以將登錄的cookie存儲在文件中,


Python爬蟲入門這一篇就夠了


常見的反爬有哪些

1、通過user-agent來控制訪問

user-agent能夠使服務器識別出用戶的操作系統及版本、cpu類型、瀏覽器類型和版本。很多網站會設置user-agent白名單,只有在白名單範圍內的請求才能正常訪問。所以在我們的爬蟲代碼中需要設置user-agent偽裝成一個瀏覽器請求。有時候服務器還可能會校驗Referer,所以還可能需要設置Referer(用來表示此時的請求是從哪個頁面鏈接過來的)


Python爬蟲入門這一篇就夠了


如下是CSDN中的Request Header中的信息


Python爬蟲入門這一篇就夠了


2、通過IP來限制

當我們用同一個ip多次頻繁訪問服務器時,服務器會檢測到該請求可能是爬蟲操作。因此就不能正常的響應頁面的信息了。

解決辦法常用的是使用IP代理池。網上就有很多提供代理的網站、


Python爬蟲入門這一篇就夠了


3、設置請求間隔

import time

time.sleep(1)

4、自動化測試工具Selenium

Web應用程序測試的Selenium工具。該工具可以用於單元測試,集成測試,系統測試等等。它可以像真正的用戶一樣去操作瀏覽器(包括字符填充、鼠標點擊、獲取元素、頁面切換),支持Mozilla Firefox、Google、Chrome、Safari、Opera、IE等等瀏覽器。

5、參數通過加密

某些網站可能會將參數進行某些加密,或者對參數進行拼接發送給服務器,以此來達到反爬蟲的目的。這個時候我們可以試圖通過js代碼,查看破解的辦法。

連接xxx

或者可以使用"PhantomJS",PhantomJS是一個基於Webkit的"無界面"(headless)瀏覽器,它會把網站加載到內存並執行頁面上的JavaScript,因為不會展示圖形界面,所以運行起來比完整的瀏覽器更高效。

6、通過robots.txt來限制爬蟲

robots.txt是一個限制爬蟲的規範,該文件是用來聲明哪些東西不能被爬取。如果根目錄存在該文件,爬蟲就會按照文件的內容來爬取指定的範圍。

瀏覽器訪問https://www.taobao.com/robots.txt

可以查看淘寶的robots.txt文件

部分內容如下

User-agent: BaiduspiderDisallow: /product/Disallow: /User-Agent: GooglebotDisallow: /User-agent: BingbotDisallow: /User-Agent: 360SpiderDisallow: /User-Agent: YisouspiderDisallow: /User-Agent: SogouspiderDisallow: /User-Agent: Yahoo! SlurpDisallow: /User-Agent: *Disallow: /

可以看出淘寶拒絕了百度爬蟲、谷歌爬蟲、必應爬蟲、360爬蟲、神馬爬蟲,搜狗爬蟲、雅虎爬蟲等約束。

分析

我們可以分析爬取的網頁內容,獲得我們真正需要的數據,常用的有正則表達式,BeautifulSoup,XPath、lxml等

正則表達式是進行內容匹配,將符合要求的內容全部獲取;

xpath()能將字符串轉化為標籤,它會檢測字符串內容是否為標籤,但是不能檢測出內容是否為真的標籤;

Beautifulsoup是Python的一個第三方庫,它的作用和 xpath 作用一樣,都是用來解析html數據的相比之下,xpath的速度會快一點,因為xpath底層是用c來實現的

存儲

通過分析網頁內容,獲取到我們想要的數據,我們可以選擇存到文本文件中,亦可以存儲在數據庫中,常用的數據庫有MySql、MongoDB

存儲為json文件


Python爬蟲入門這一篇就夠了


存儲為cvs文件


Python爬蟲入門這一篇就夠了


存儲到Mongo


Python爬蟲入門這一篇就夠了



分享到:


相關文章: