Python 爬蟲入門(一)


  畢設是做爬蟲相關的,本來想的是用java寫,也寫了幾個爬蟲,其中一個是爬網易雲音樂的用戶信息,爬了大概100多萬,效果不是太滿意。之前聽說Python這方面比較強,就想用Python試試,之前也沒用過Python。所以,邊爬邊學,邊學邊爬。廢話不多說,進入正題。

  1.首先是獲取目標頁面,這個對用python來說,很簡單

#encoding=utf8
import
urllib res = urllib.urlopen("http://www.baidu.com") print res.read()

  運行結果和打開百度頁面,查看源代碼一樣。這里針對python的語法有幾點說明。

    a).import 就是引入的意思,java也用import,C/C++用的是include,作用一樣

    b).urllib 這個是python自帶的模塊,在以后開發的時候,如果遇到自己需要的功能,python自帶的模塊中沒有的時候,可以試着去網上找一找,比如需要操作MySql數據  庫,這個時候python是沒有自帶的,就可以在網上找到MySQLdb,然后安裝引入就行了。

    c).res是一個變量,不用像java,C語言那樣聲明。用的時候直接寫就行了

    d).標點符號。像java,C這些語言,每行代碼后面都要用分號或者別的符號,作為結束標志,python不用,用了反了會出錯。不過有的時候,會用標點符號,比如冒號,  這個后面再說

    e).關於print,在python2.7中,有print()函數,也有print 語句,作用基本差不多。

    f).#注釋

    g).encoding=utf8代表使用utf8編碼,這個在代碼中有中文的時候特別有用

  2.解析獲取的網頁中的元素,取得自己想要的,以豆瓣為例,我們想獲取這個頁面中的所有書籍名稱(僅供學習交流)

  http://www.douban.com/tag/%E5%B0%8F%E8%AF%B4/?focus=book

  

  首先獲取頁面代碼:

#encoding=utf8
import urllib
res = urllib.urlopen("http://www.douban.com/tag/%E5%B0%8F%E8%AF%B4/?focus=book")
print res.read()

  獲取結果,通過分析頁面源代碼(建議用firefox瀏覽器,按F12,可看到源代碼),可以定位到有效代碼如下:

  

  

  下面我們開始解析(這里用BeautifulSoup,自行下載安裝),基本流程:

    a).縮小范圍,這里我們通過id="book"獲取所有的書

    b).然后通過class="title",遍歷所有的書名。

  代碼如下:  

#encoding=utf8
import urllib
import BeautifulSoup

res = urllib.urlopen("http://www.douban.com/tag/%E5%B0%8F%E8%AF%B4/?focus=book")
soup = BeautifulSoup.BeautifulSoup(res)
book_div = soup.find(attrs={"id":"book"})
book_a = book_div.findAll(attrs={"class":"title"})
for book in book_a:
    print book.string

  代碼說明:

    a).book_div    通過id=book獲取div標簽

    b).book_a    通過class="title"獲取所有的book  a標簽

    c).for循環     是遍歷book_a所有的a標簽

    d).book.string  是輸出a標簽中的內容

  結果如下:

  

  3.存儲獲取的數據,比如寫入數據庫,我的數據庫用的Mysql,這里就以Mysql為例(下載安裝MySQLdb模塊這里不做敘述),只寫怎么執行一條sql語句

  代碼如下:

connection = MySQLdb.connect(host="***",user="***",passwd="***",db="***",port=3306,charset="utf8")
cursor = connection.cursor()
sql = "*******"
sql_res = cursor.execute(sql)
connection.commit()
cursor.close()
connection.close()

  說明:

    a).這段代碼是執行sql語句的流程,針對不同的sql語句,會有不同的處理。比如,執行select的語句,我怎么獲取執行的結果,執行update語句,怎么之后成沒成功。這  些就要自己動手了

    b).創建數據庫的時候一定要注意編碼,建議使用utf8

  4.至此,一個簡單的爬蟲就完成了。之后是針對反爬蟲的一些策略,比如,用代理突破ip訪問量限制

 聲明:

  代碼僅供學習交流使用,不能用於惡意采集、破壞等不良行為,出問題概不負責

  如有問題,歡迎指正。

  轉載請注明出處。

  

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM