前面我們已經說了那麼多基礎知識了,下面我們做個實戰專案來挑戰一下吧。這次就用前面學的urllib和正規表示式來做,python爬蟲爬取糗事百科的小段子。
爬取前我們先看一下我們的目標:
1.抓取糗事百科熱門段子
2.過濾帶有的段子
首先我們確定好頁面的url,糗事百科的**是:但是這個url不方便我們後面連續抓取,我們可以看一下第二頁就知道url如何構造了,url是/?s=4872200,其中中間的數字1代表頁數,我們可以傳入不同的值來獲得某一頁的段子內容,其他的部分是不變的。
我們先看看最基本的頁面抓取方式,看看會不會成功
import urllib2
page=1
url = ''+str(page)+'/?s=4872200'
try:
request = urllib2.request(url)
response = urllib2.urlopen(request)
print response.read()
except urllib2.urlerror, e:
if hasattr(e,"code"):
print e.code
if hasattr(e,"reason"):
print e.reason
結果出現 raise badstatusline(line) httplib.badstatusline: '',我們需要加上headers驗證,如下:
import urllib2
page=1
url = ''+str(page)+'/?s=4872200'
user_agent ='mozilla/4.0(compatible;msie 5.5;windows nt)'
headers=
try:
request = urllib2.request(url,headers = headers)
response = urllib2.urlopen(request)
print response.read()
except urllib2.urlerror, e:
if hasattr(e,"code"):
print e.code
if hasattr(e,"reason"):
print e.reason
好啦,執行正常,頁面**也列印出來了。
2、用正規表示式提取段子
我們先看審查元素,看一下**,如下圖:
每個段子都在乙個盒子裡,...
現在我們需要
content = response.read().decode('utf-8')
pattern = re.compile('.*?.*?.*?.*?.*?content">'+
'(.*?)
.*?.*?vote".*?number">(.*?).*?stats-comments".*?(.*?)',re.s)
items = re.findall(pattern,content)
for item in items :
print item[0],item[1],item[2],item[3]
看一下爬出來的段子:
好啦下面我們把**完整的留下,加了乙個小迴圈,爬取10頁:
# _*_ coding:utf-8 _*_
import urllib2
import re
page=1
print u"第%d頁"%page
while page < 10:
url = '' + str(page) + '/?s=4872200'
user_agent ='mozilla/4.0(compatible;msie 5.5;windows nt)'
headers=
try:
request = urllib2.request(url,headers = headers)
response = urllib2.urlopen(request)
content = response.read().decode('utf-8')
pattern = re.compile('.*?.*?.*?.*?.*?content">' +
'(.*?)
.*?.*?vote".*?number">(.*?).*?stats-comments".*?(.*?)',re.s)
items = re.findall(pattern,content)
for item in items :
print item[0],item[1],item[2],item[3]
except urllib2.urlerror, e:
if hasattr(e,"code"):
print e.code
if hasattr(e,"reason"):
print e.reason
page = page + 1
print u"第%d頁"%page
好啦,**比較糙,大家可以自己試試! 爬蟲實戰 糗事百科
閒來無聊,在網上按照教程寫了乙個python爬蟲,就是竊取資料然後儲存下來爬蟲實戰 糗事百科。從糗百上爬取段子,然後輸出到console,我改了一下儲存到了資料庫。不扯沒用的,直接上 這是爬取得部分 usr bin python coding utf 8 import urllib import u...
python爬蟲糗事百科
coding utf 8 import urllib2 import re 工具類 class tools object remove n re.compile r n replace br re.compile r remove ele re.compile r re.s rs 引數,要進行替換的...
Python爬蟲 糗事百科
如果沒有這兩個庫 在命令列任意位置下 前提是你已經配置好了環境,這個網上大把,自行google pip install requests,pip install bs4 import beautifulsoup import requests from bs4 import beautifulsou...