Python爬蟲指令碼

FlyOceanFish發表於2018-02-01

Python

Python (英國發音:/ˈpaɪθən/ 美國發音:/ˈpaɪθɑːn/), 是一種物件導向的解釋型計算機程式設計語言。Python語法簡潔清晰,特色之一是強制用空白符(white space)作為語句縮排。

學習

目前Python有兩個版本2.x和3.x,市場上2.x用的是比較多的。所以還是建議先學2.x比較好一些。因為作者對Swift比較熟悉,所以在看Python的過程中上手很快,花了一天時間就把《零基礎學Python》看了一遍。話說起來一直以來,大家都覺著Swift跟js語法很像。看完Python之後,我覺著陣列、字串、遍歷這些與Python基本一樣,就是換槍不換藥。甚至有些特性Swift還沒有,估計以後可能會有吧。哈哈

大家可能有點疑問為啥要學習Python呢?難不成要轉行做大資料分析啥的嗎?Python能做的確實很多,作者考慮的主要是工作中,很多時候要用到指令碼幫助我們做一些看似簡單但是挺繁瑣費時間的事情,這時候如果用一個指令碼那就是分分鐘鐘的事情啦。

目前蘋果系統自帶Python,版本是2.x的,所以大家不必安裝,可以直接使用的。

Python工具的話Atom等都能寫,不過作者推薦使用PyCharm。這個工具用起來很簡單,而且還有很多提示啥的功能,非常方便。

實踐

學習一門語言,要想學好,只有通過實踐才能獲得快速的成長。所以作者就實踐了通過Python抓包的功能

環境安裝

抓包之前我們得裝以下2個外掛,第二個不裝也可以,用Python自帶的,不過這個第三方外掛速度等方面優異與Python自帶的包,而且Beautiful Soup是推薦安裝的

  • Beautiful Soup Beautiful Soup 是一個可以從HTML或XML檔案中提取資料的Python庫.它能夠通過你喜歡的轉換器實現慣用的文件導航,查詢,修改文件的方式.Beautiful Soup會幫你節省數小時甚至數天的工作時間
  • lxml

Beautiful Soup這個外掛有個很大的好處就是有中文文件,方便了廣大學友們。哈哈!!文件地址傳送門

如果使用的是PyCharm作為開發工具的話,大家可以看一下這個文件PyCharm安裝第三方模組Request、BeautifulSoup

程式碼實踐

我們抓取的是嗅事百科網站上的資料地址是:https://www.qiushibaike.com/8hr/page/1/

# -*- coding: utf-8 -*-

import urllib2
from bs4 import BeautifulSoup
num = 0
for page in range(1, 10):
    url = "https://www.qiushibaike.com/8hr/page/"+str(page)
    heads = {"User-Agent": "Mozilla/5.0"}
    res = urllib2.Request(url, headers=heads)
    response = urllib2.urlopen(res)
    html = response.read()
    soup = BeautifulSoup(html, "lxml")
    data = soup.select("div .content span")
    for some in data:
        num = num + 1
        print num
        unicode_string = unicode(some.string)
        if unicode_string != "None":
            print unicode_string + "\n"

複製程式碼

# -- coding: utf-8 --

這個主要是為了防止中文亂碼,2.x需要加入的;3.x的話就不需要加了。

data = soup.select("div .content span")

這一句是最關鍵的一句,首先我們要去看BeautifulSoup的官方文件select方法的使用。其次是我們如何拿到"div .content span"這個引數的呢?

1、在瀏覽器開啟嗅事百科 2、在文字出右擊,選擇檢查

1517464304757.jpg
3、出現以下介面
1517464462211.jpg

通過以上圖我們可以看到div.contentspan這三項

我們在寫 CSS 時,標籤名不加任何修飾,類名前加點,id名前加 #,在這裡我們也可以利用類似的方法來篩選元素,用到的方法是 soup.select(),返回型別是 list

總結

大家如果有不明白的可以留言,作者也是初學者,可以相互學習共同進步。我的部落格FlyOceanFish

相關文章