-#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所示:
那麼以上步驟完成後,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 頭獲取源碼,並且獲取多頁內容