python爬蟲百度貼吧標題數據

-#python爬蟲百度貼吧標題

一 、Requests安裝

使用pip命令進行安裝

  • windows :pip install requests
  • mac os x/linux:sudo pip install requests

強調說明下第二種:默認情況下,mac下沒有安裝pip,所以需要我們自己進行安裝,在終端下使用命令:sudo easy_install pip
很多人同樣使用sudo easy_install requests進行安裝,但是我不推薦,因爲使用easy_install無法進行卸載。
OK,接下來繼續進行。在這裏我使用的IDE是PyCharmCE,在mac下自帶的Python版本過低,無使用我們引入的requests,所以需要進行下載。進入Python官網https://www.python.org/downloads/進行對應版本的下載。

那麼現在進行requests的安裝,在終端下輸入sudo pip install requests,提示成功安裝後,在/Library/Python/2.7/site-packages發現Requests文件夾,但是此時你使用 import requests語句會提示“ImportError: No module named requests”錯誤,所以此時你需要更改Project Interpreter 選擇 File -> Settings ->Project-> Single-thread-crawler ->Project Interpreter
如圖1所示:
圖1

那麼以上步驟完成後,python爬蟲所需要的requests構建完成。

二、使用Requests獲取網頁的源代碼

兩種方式:

  • 直接獲取源代碼
  • 更改Http頭獲取源代碼(反爬蟲機制)

首先我們需要先獲取源代碼,代碼如下

#-*-coding:utf-8-*-
import requests

#下面三行是編碼轉換的功能,大家現在不用關心。
import sys
reload(sys)
sys.setdefaultencoding("utf-8")

html = requests.get('http://tieba.baidu.com/f?kw=大連理工大學城市學院&ie=utf-8&pn=0')
print html.text

(此網頁不需要更改頭就可以獲取,並不是所有的網站用這幾行就可以提取的,有的網站需要我們更改頭,把程序僞裝成瀏覽器進行訪問,下一篇關於python爬蟲的文章將會講解更改頭的獲取方法)

Python的默認編碼文件是用的ASCII碼,你將文件存成了UTF-8也沒用,解決辦法很簡單

只要在文件開頭加入 # -- coding: UTF-8 -- 或者 #coding=utf-8 就行了。
運行代碼將會獲取百度貼吧的html標題

三、使用正則表達式提取每個帖子的標題

源碼

觀察源碼你可以發現規律,每一個標題的都在”class=”j_th_tit “>**< a>”之間

既然觀察出如下規律,我們就可以設計出相應的代碼

#-*-coding:utf8-*-

import requests
import re

#下面三行是編碼轉換的功能,大家現在不用關心。
import sys
reload(sys)
sys.setdefaultencoding("utf-8")

html = requests.get('http://tieba.baidu.com/f?kw=大連理工大學城市學院&ie=utf-8&pn=0')

html.encoding = 'utf-8' #將編碼轉爲utf-8FA防止中文亂碼。

title = re.findall('class="j_th_tit ">(.*?)</a>',html.text,re.S)

for TITLE in title:
    print TITLE

執行結果:
執行結果

在這裏我們講解下re.findall(‘class=”j_th_tit “>(.*?)’,html.text,re.S)

我們使用re.findall來進行數據匹對,根據規律設計出 class=”j _ th_tit “>(.?)< /a> ,其中(. ?)代表的意思是非貪心算法:各個排查

以上就是一個簡單的 爬蟲百度貼吧標題的程序,明天將會更新一篇關於更改Http 頭獲取源碼,並且獲取多頁內容

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