1. 程式人生 > >[Python][爬蟲01]從零環境搭建到第一個例項

[Python][爬蟲01]從零環境搭建到第一個例項

>Python環境

    首先,我們需要下載一定版本的Python。

    Python版本主要分2.7和3.x兩種選擇,由於Python3中的部分語法和特性對比Python發生了改變,因此一些原有的庫對3的支援不是那麼好。

    考慮到日後的某些方便,這裡採用Python 2.7(64bit)。(64位的Python相比,沒有32位Python記憶體上限為2G的侷限。)當然,一般來說,我會同時安裝Python3和Python2.7。

    接著,我們需要一款IDE。選擇主要如下:EclipseIDEAPyCharm

  • Eclipse是完全免費的,而後兩款是收費的(但都有免費的社群版和教育版)。
  • 而Eclipse和IDEA其實嚴格來說是JAVA的編譯器,但是都有相應的Plugins用於對其他語言進行擴充套件;PyCharm則是IDEA的製作公司JetBrains為python專門打造的整合開發環境。
  • 從總的使用體驗來說,IDEA和PyCharm的使用體驗遠好過Eclipse,Eclipse的pyhon環境搭建可>參考此處<;IDEA的python環境搭建可以>參考此處<

>Spider的抽象級別

    在Python中,一個完整的爬蟲(網際網路蜘蛛)的實現方式多種多樣,但主要過程還是兩步:

  1. 偽裝HTTP Request並獲取相應的HTML檔案(包括且不限於CSS、JS等內容);
  2. 解析HTML(XML或DOM Tree),獲取需要的資料;

    在第一步中,常用的方法是使用urllib和urllib2(在Python3中這兩個包已經合為一個包)來實現對網頁資源的獲取。當然,官方文件其實更推薦使用第三方庫:requests

  • urllib(2)模組是Python標準庫中用於處理URL的元件合集;
  • requests是在urllib之上的HTTP客戶端介面,某種意義上是一層高階的封裝。

    在第二步中,要解析扒下來的HTML檔案(及其他),常用的是正則表示式(regex)BeautifulSoup兩種(lxml暫不做考慮,因為BS實際上可以用lxml來做解析引擎)。

  • 正則表示式(regex)的學習難度視情況而定,如果之前有其他語言的正則表示式基礎,對於Python中的正則表示式也能很快上手。
  • BeautifulSoup上手更快,語言也更加偏自然化,但是有些編寫不那麼嚴謹的網頁用BS可能很難解析出來,這時候就需要搭配正則表示式來做提取。

    但這些方法某種意義上還是不那麼方便,於是便有了Scrapy這種高階抽象的爬蟲框架。(它不僅僅可以用來抓Web資料)

    從學習難度和操作難度上,從urllib+regex、requests+BeautifulSoup到Scrapy,抽象程度依次加大,方便程度越來越好,但對底層的掌握能更好幫你理解一些實際操作時的Eoor和解析失敗的原因。第一個爬蟲,我們使用urllib+正則表示式的基礎方法來實現。

>第一個爬蟲

    我們試著抓取百度首頁的HTML內容:

url = 'http://www.baidu.com/'
response = urllib2.urlopen(url)  # import urllib2
result = response.read()
print result

    這時候就能在控制檯輸出了整個頁面的HTML內容了(含JS和CSS)。   

    但這似乎沒什麼意思,我們直接利用urllib+regex進行一次實戰吧——我們的目標是抓取B站首頁的TOP推廣視訊:


    首先,第一步,我們先偽造一次request:

def req(url):
    response = urllib2.urlopen(url)  # import urllib2
    return response
    接著,第二步,我們準備開始解析獲得的資料,並從整個HTML中利用regex提取出所需要的資料。利用審查元素功能,我們可以得到以下內容:


    因此,我們可以很容易得到每個card的DOM Tree結構:

<div class="groom-module home-card">
    <p class="title">
    <p class="author">
    <p class="play">
    於是解碼方法就可以寫出來了:
def decode(response):
    card_root_div = r'<div class="groom-module home-card">(.*?)</div>'
    card_title_p = r'<p class="title">(.*?)</p>'
    card_author_p = r'<p class="author">(.*?)</p>'
    card_play_p = r'<p class="play">(.*?)</p>'
    all_card_root = re.findall(card_root_div, response, re.S|re.M)  # import re
    for c in all_card_root:
        title = re.search(card_title_p, c, re.S|re.M).group(1)
        author = re.search(card_author_p, c, re.S|re.M).group(1)
        play = re.search(card_play_p, c, re.S|re.M).group(1)
        print title, author, play
執行我們的爬蟲指令碼:
bilibili_url = 'https://www.bilibili.com/'
decode(req(bilibili_url).read())

    輸出如下(視訊標題+視訊作者+視訊播放量):


    * 關於正則表示式,需要>另外去學習<,這裡只對如何“分析網頁”並配以“正則表示式提取”做出瞭解釋和演示。


    第一個完整的簡單爬蟲指令碼就這樣寫完了。

相關推薦

[Python][爬蟲01]環境搭建第一例項

>Python環境     首先,我們需要下載一定版本的Python。     Python版本主要分2.7和3.x兩種選擇,由於Python3中的部分語法和特性對比Python發生了改變,因此一些原有的庫對3的支援不是那麼好。     考慮到日後的某些方便,

python自己動手開始搭建FTP伺服器2 FTP初步框架

5 開始新增FTP框架     通過學習FTP協議,我們知道FTP維護了兩個TCP連線。一個是控制連線,一個是資料連線。控制連線走的是控制資訊、命令等。資料連線是用來發送檔案和目錄的。  為什麼要這麼設計呢?剛好在學習TCP/IP協議棧,嘗試解釋下。FTP中的命令,都是簡單

Python爬蟲+ pyqt5(開始到爬取教務處新聞,課程表,成績)

前言:剛開始以為Python爬蟲很高深,其實,當你模仿其他人的程式碼,敲了一遍之後,你8成就可以理解Python的基本爬蟲了。無論是學習什麼事情,剛開始就要準備好利器工具,那樣我們才能開始我們的旅程。工欲善其事,必先利其器麻!Python的安裝:點選開啟連結    我下載的是

Python爬蟲入門——2. 1 我的第一爬蟲程式

         第一個爬蟲程式就寫的簡單一點,我們用requests庫以及BeautifulSoup庫來完成我們的第一個程式(我們所用的python版本為  3.x)。我們爬取豆瓣圖書(https://book.douban.com/top250?start=25)Top1

第一python分散式爬蟲打造搜尋引擎環境搭建 第一節 CentOS7環境下pycharm的安裝和使用

       時下最流行的大資料想必大家都很耳熟了,作為程式設計師,我們需要不時的夯實一下自己的知識!在接下來的一個月內,我會在此記錄下自己學習的點點滴滴,一來方便自己日後檢視,二來給初學者提供點學習思路!堅持就是勝利,你比別人差的只是每天的點滴積累!想要開始

第二章 python分散式爬蟲打造搜尋引擎環境搭建 第一節建立第一個scrapy專案

       scrapy可以執行在python2.7、python3.3或者是更高的版本上;首先我們借用之前的知識,建立一個python環境。然後在此python環境中建立我們的scrapy專案。這裡你如果不理解的可以給你們大個比方,python版本就好比是

第二章 python分散式爬蟲打造搜尋引擎環境搭建 第一爬蟲基礎知識介紹

第一,爬蟲能做什麼?作用是啥?簡單的介紹幾種,以便於瞭解。 1. 搜尋引擎---百度、google、垂直領域搜尋引擎 2. 推薦引擎---今日頭條 3. 機器學習的資料樣本 4. 資料分析(如金融資料分析)、輿情分析等 第二,技術選型(為什麼要使用scrapy而不是request

Mac 計算機的日常使用 和 開始搭建Python開發環境

Mac 計算機的日常使用 和 從零開始搭建Python開發環境 本文作者:魏泯 我的部落格原地址是:https://www.cnblogs.com/Asterism-2012 在進行學習mac常用操作的時候,保證你的mac已經連線網路。 Mac常用操作 我這個機器預設滑鼠滾輪是上下顛倒的,我用著還

Ubuntu 開始搭建Python開發環境

環境:Ubuntu 16.04 以下命令若無加粗備註說明在本地計算機操作,則都是在伺服器端操作 1 修改Ubuntu軟體源 Ubuntu安裝好之後,安裝軟體源的伺服器地址在境外,速度會比較慢,因此建議修改軟體源為國內映象,這樣安裝和更新軟體

開始搭建Java開發環境第一篇:Java工程師必備軟體大合集

1、JDK https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 目前主流的JDK版本還是JAVA8,我在阿里用的也是Java8。 JDK裡已經包含了JRE也就是Java虛擬機器和執行環境,無需

開始系列之vue全家桶(4)帶新手小白一起搭建第一個人網站項目

轉載 個人網站 rfi red nbsp oot ott osx 全部 未經允許,嚴禁轉載,全文由blackchaos提供。 在安裝好了前面大部分需要的插件,我們開始進行第一個個人項目。結合vue+vuex+vue-cli+vue-router+webpack使用。

開始搭建微信硬件開發環境全過程——1小時掌握微信硬件開發流程

sdn 流程 第三方服務 ota 必須 air 開發板 port pen 筆者決定在嵌入式企鵝圈2016年的首篇文章中,發表微信硬件物聯領域極具實踐價值的文章,它將

Windows環境下,開始搭建Nodejs+Express+Ejs框架(一)---安裝nodejs

直接 分享圖片 完成 info pre download png 安裝包 get 第一步,安裝nodejs https://nodejs.org/en/download/ 這個是nodejs的官網,由於操作系統是win7 64位的,所以,我下載的是node-v8.11.1-

Windows環境下,開始搭建Nodejs+Express+Ejs框架(二)---安裝Express,ejs

所有 nod 環境 安裝目錄 關於 str 列表 ima 執行 安裝Express,ejs的前提是一定要先安裝nodejs,具體安裝方法請查看 http://www.cnblogs.com/tfiremeteor/p/8973105.html 安裝Express和ejs的前

開始搭建自己的VueJS2.0+ElementUI單頁面網站(一、環境搭建

如圖所示 增刪改 type default sdn orm rain exp 名稱 原網址:https://blog.csdn.net/u012907049/article/details/72764151 前言 VueJS可以說是近些年來最火的前端框架之一,越來越多的

webpack4配置搭建簡單的React16開發環境

scripts cif TBase ase ren 如果 輸出 init ntb 寫在最前 暑假想要學習React, 發現React官網上的沒有說明如何搭建React開發環境, 網上找的很多都是基於webpack3的, 或者直接使用腳手架, 所以趁著放假, 就稍微學了下we

開始搭建linux下laravel 5.6環境(一)

yum acad 分享圖片 tps .html 啟動 服務 all 從零開始 首先你需要有一臺linux服務器,或者虛擬機,這裏就不贅述了,不會的可以自行百度。 我這裏準備的是一臺騰訊雲服務器,系統為CentOS 7.4 64位。 你可以使用騰訊雲的登錄按鈕登錄到服務器 也

開始搭建linux下laravel 5.5所需環境(三)

一個 技術 useradd color ram end php localhost aca 好的,我們已經安裝好了nginx+mysql+php了,打開[ Laravel 5.5 文檔 ] 快速入門 —— 安裝配置篇 我們看到這裏需要安裝Composer,好的,我們現在就

新公司入職,開始搭建環境

windows環境: 1.安裝chrome瀏覽器最新版,官網下載,直接安裝 2.安裝python3,百度雲盤 3.安裝Pycharm IDE,官網下載 啟用碼:https://www.jianshu.com/p/7e31bf8dbdb4 4.安裝VMware Workstatio

linux環境開始搭建nginx+uwsgi+django環境(二)

第四步 安裝nginx及mariadb        4.1、安裝nginx                yum install nginx               或從原始碼安裝:                     執行下面的指令: