Python網絡爬蟲初探
Python語言是由Guido van Rossum大牛在1989年發明,它是當今世界最受歡迎的計算機編程語言之一,也是一門“學了有用、學了能用、學會能久用”的計算生態語言。
為此,CSDN作為國內最大的IT中文社區,特向廣大Python愛好者開設了Python學習班,幫助大家在學習的道路上少走彎路,事半功倍。在昨天的女神節,我們繼續邀請知名的CSDN博客專家楊秀璋老師,在班級里舉行博客專家會客廳活動。
引用
楊秀璋:Web數據挖掘/軟件工程。研究生階段從事Web數據挖掘和知識圖譜相關的研究,結合Python寫了一些Selenium爬蟲和數據挖掘的算法。從2013年開始在CSDN寫博客,每個月都堅持分享些技術,已完成8個專欄。
下面是楊老師在Python學習班的分享:
非常開心能夠認識大家,和大家簡單交流些Python相關的基礎知識。群里面也有很多大神,我主要結合自己做過的東西,講解一些Python知識,這節課主要是Python爬蟲相關的知識,通過一些實際的簡單應用,提升同學們學習Python的興趣。
因為是微信授課,講得不好的地方,還請大家海涵~
前面我講過:學習Python最重要的地方是通過Python做一些自己喜歡的事情,來提升自己的興趣,從而學好它,包括Python爬蟲、數據分析、自動化測試、網站、GUI游戲等。
網絡爬蟲
網絡爬蟲(Web Spider),又被稱為網頁蜘蛛、網絡機器人,它是一種按照一定的規則,自動地抓取萬維網信息的程序或者腳本。
網絡爬蟲根據Web數據挖掘的任務可以劃分為三類:
- Web結構挖掘,主要通過超鏈及HTML網頁結構進行分析爬取;
- Web內容挖掘,主要爬取網頁內容及知識;
- Web使用挖掘,主要爬取使用日志,包括按鈕或鏈接點擊的次數等。
常見的Python爬蟲工具包括:正則表達式、XPath技術、Selenium、BeautifulSoup、Scrapy等。這節課講課內容主要是Python安裝Selenium并自動爬取相關信息。
Selenium
Selenium也是一個用于Web應用程序測試的工具。Selenium測試直接運行在瀏覽器中,就像真正的用戶在操作一樣。通常用于自動化測試,這里我們是用來作為簡單的爬蟲。
第一步:安裝selenium
通過cd去到Scripts路徑下,調用pip install selenium進行安裝
注意:調用pip或easy_install安裝第三方庫函數,是常見的Python安裝用法。
第二步:安裝Firefox瀏覽器
第三步:簡單訪問百度頁面
from selenium import webdriver
driver = webdriver.Firefox()
driver.get("http://www.baidu.com")
data = driver.title
print data
其中:webdriver.Firefox()是調用Firefox瀏覽器,這句話會自動彈出火狐瀏覽器
driver.get(url)是調用瀏覽器后訪問某個url頁面
driver中包含一些屬性和方法,這里只是輸出標題“百度一下,你就知道”
注意:Python導入包的常見語法就是 from xxxx import xxxx
例如:from sklearn.cluster import Kmeans
從機器學習sklearn包的聚類cluster中導入Kmeans聚類的方法
其中Kmeans在cluster中,當然還有其他聚類的方法
from selenium import webdriver
driver = webdriver.Firefox()
driver.get("http://www.baidu.com")
data = driver.title
print data
driver.save_screenshot('baidu.png')
添加一句代碼,復制下載整個頁面到本地。
Selenium常見元素定位方法和操作
注意driver下包括很多方法和屬性,常見的包括:
這里有各種策略用于定位網頁中的元素(locate elements),你可以選擇最適合的方案,Selenium提供了一下方法來定義一個頁面中的元素:
?find_element_by_id
?find_element_by_name
?find_element_by_xpath
?find_element_by_link_text
?find_element_by_partial_link_text
?find_element_by_tag_name
?find_element_by_class_name
?find_element_by_css_selector
下面是查找多個元素(這些方法將返回一個列表):
?find_elements_by_name
?find_elements_by_xpath
?find_elements_by_link_text
?find_elements_by_partial_link_text
?find_elements_by_tag_name
?find_elements_by_class_name
?find_elements_by_css_selector
除了上面給出的公共方法,這里也有兩個在頁面對象定位器有用的私有方法。這兩個私有方法是find_element和find_elements。
例如:
對應的文字:
from selenium import webdriver
driver = webdriver.Firefox()
driver.get("http://www.baidu.com")
data = driver.title
print data
driver.save_screenshot('baidu.png')
通過id定位元素
word = driver.find_element_by_id('u1')
print word.text
重點方法是分析網站DOM樹結構:
這里需要注意,網頁通常都是采用樹形的形式進行存儲的,比如:
我們需要學會右鍵審查元素,分析對應的界面:
這個比較基礎的知識,給大家普及下
題目:
- 1.學會pip方法安裝各種庫函數,Anaconda調用pip操作。
- 2.學會Python調用Selenium方法簡單爬取百度首頁。
- 3.學會Python調用Selenium定位元素,嘗試寫個需要翻頁的爬蟲。
- 4.學會Python調用Selenium自動登錄操作。
- 5.(難) 如果實現防止403 Forbidden錯誤,ip地址轉換,模擬登陸等操作。
同時,對講課內容存在什么意見,也歡迎大家反饋給我,相互學習,相互提高。
希望這門課程對你們有所幫助,感覺講得不是很好,希望給多知識來和我交流,謝謝~
感謝CSDN這個平臺。
Python爬蟲
- urllib等包簡單下載數據
- Selenium爬蟲=》自動化工具
- Beautifulsoup爬蟲
- Dom樹分析
- 分布式爬蟲,線程
Python數據分析
- 常見Python數據分析包
- Sklearn、numpy、scipy、Matplotlib
- 數據挖掘基礎知識
基本流程
- Python網站設計
- Odoo ERP框架
課堂花絮
歡迎希望學習Python語言,熱愛交流技術的同學加入我們的CSDN Python學習班。入群請掃下方群二維碼。
來自:http://www.iteye.com/news/32206