py spider 第一天

總結: selenium只是個虛擬的瀏覽器,或者說是一個web自動化測試工具,而不是真正意義上的爬蟲框架

一、Scrapy

Scrapy A Fast and Powerful Scraping and Web Crawling Framework

關鍵詞是和,使用過確實感覺如此。我感覺就是一個全家桶,它把爬蟲所需要的大部分東西(爲什麼不是全部,下面會說到)都集成到這個框架中,如:下載器、中間件、調度器、Spider、調試、數據流等等所有功能全部都在這一個框架中,你所需要做的只是在命令行中輸入:

Scrapy 的缺點也是顯而易見的:不支持分佈式。scrapy中scheduler是運行在隊列中的,而隊列是在單機內存中的,服務器上爬蟲是無法利用內存的隊列做任何處理。但是也有解決辦法,參見rmax/scrapy-redis

二、selenium

selenium :最後來到今天的主角Selenium, 首先看看官方怎麼說

What is Selenium?

Selenium automates browsers. That’s it! What you do with that power is entirely up to you. Primarily, it is for automating web applications for testing purposes, but is certainly not limited to just that. Boring web-based administration tasks can (and should!) be automated as well.

Selenium has the support of some of the largest browser vendors who have taken (or are taking) steps to make Selenium a native part of their browser. It is also the core technology in countless other browser automation tools, APIs and frameworks.

重點是:,翻譯過來就是:它是用於自動化Web應用程序的測試目的,但肯定不僅限於此,簡單來說,Selenium 是web自動化測試工具集,如果你去Google上搜索 Selenium ,大多結果都是相關內容,比較出名的有博客園的蟲師,寫的兩本書也都是關於自動化測試方面的

至於爲啥爬蟲要用selenium,我在某些博客上找到有人這樣說,我也不知道怎麼說

對於一般網站來說scrapy、requests、beautifulsoup等都可以爬取,但是有些信息需要執行js才能顯現,而且你肉眼所能看到的基本都能爬取下來,在學習中遇到了,就記錄下來方便以後查看。

webdrive是selenium中一個函數:

from selenium import webdriver

driver = webdriver.Chrome()

driver.get(‘網址’)

其中PhantomJS同時可以換成Chrome、Firefox、Ie等等,但是PhantomJS是一個無頭的瀏覽器,運行是不會跳出相應的瀏覽器,運行相對效率較高。在調試中可以先換成Chrome,方便調試,最後再換成PhantomJS即可。

下面是吐槽時間,說一說的缺點:

速度慢。每次運行爬蟲都打開一個瀏覽器,如果沒有設置,還會加載圖片、JS等等一大堆東西;

佔用資源太多。有人說,把換成無頭瀏覽器,原理都是一樣的,都是打開瀏覽器,而且很多網站會驗證參數,如果對方看到你是以去訪問,會BAN掉你的請求,然後你又要考慮更換請求頭的事情,事情複雜程度不知道多了多少,爲啥學Python?因爲Python簡單啊,如果有更快、更簡單的庫可以實現同樣的功能,爲什麼不去使用呢?

對網絡的要求會更高。加載了很多可能對您沒有價值的補充文件(如css,js和圖像文件)。 與僅僅請求您真正需要的資源(使用單獨的HTTP請求)相比,這可能會產生更多的流量。

**

BeautifulSoup

BeautifulSoup是一個模塊,該模塊用於接收一個HTML或XML字符串,然後將其進行格式化,之後就可以使用他提供的方法進行快速查找指定元素,從而使得在HTML或XML中查找指定元素變得簡單。

四大對象種類:
Beautiful Soup將複雜HTML文檔轉換成一個複雜的樹形結構,每個節點都是Python對象,所有對象可以歸納爲4種:

Tag:HTML 中的一個個標籤,比如a,div等,有兩個屬性name和attrs

NavigableString:標籤內部的文字,可以用 .string獲得

BeautifulSoup:表示的是一個文檔的全部內容

Comment:註釋
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章