python學習之從網頁爬取段子(超實用、簡單)-python爬取股票資訊
下麪是通過Python 爬取段子的完整代碼
運行環境 python 3.4
注釋很清晰相信有點基礎的都能懂
關鍵點就在正則表達式
運行程序,就會不斷地從網站獲取段子,竝以特定的形式展示出來,超級實用。
# -*- coding:utf-8 -*-
import urllib.request
import re
def getHtml(url , page):
user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
try:
req = urllib.request.Request(url)
req.add_header('User-Agent', user_agent) #'fake-client'
response = urllib.request.urlopen(req)
the_page = response.read()
html = the_page.decode('utf-8')
except urllib.error.URLError as e:
if hasattr(e,"code"):
print (e.code)
if hasattr(e,"reason"):
print (e.reason)
return html
def getCrossTalk(html):
pattern = re.compile('.*?
'="content".*?(.*?).*?.*?(.*?).*?class="number">(.*?)',re.S)
#1).*? 是一個固定的搭配,.和*代表可以匹配任意無限多個字符,加上?表示使用非貪婪模式進行匹配,也就是我們會盡可能短地做匹配,以後我們還會大量用到 .*? 的搭配。
#2)(.*?)代表一個分組,在這個正則表達式中我們匹配了五個分組,在後麪的遍歷item中,item[0]就代表第一個(.*?)所指代的內容,item[1]就代表第二個(.*?)所指代的內容,以此類推。
#3)re.S 標志代表在匹配時爲點任意匹配模式,點 . 也可以代表換行符。
items = re.findall(pattern,html)
for item in items:
haveImg = re.search("img",item[3])
if not haveImg:
print ('發帖者: '+item[0]+'','內容: '+item[1]+'','點贊人數: '+item[2],'評論人數: '+item[3]+'')
for page in range(1,35):
url = 'http://www.qiushibaike.com/hot/page/' + str(page)
html = getHtml(url, page)
getCrossTalk(html)
版權聲明:本文內容由互聯網用戶自發貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如發現本站有涉嫌抄襲侵權/違法違槼的內容, 請發送郵件至 1111132@qq.com 擧報,一經查實,本站將立刻刪除。