冷笑話Python爬蟲1.1
阿新 • • 發佈:2019-01-08
頁面內容在不斷變化,如此程式不能正常執行,請自行修改正則表示式進行正確匹配!該程式碼只提供學習,為了避免使用不當,引起不必要麻煩,把程式碼中的Url刪掉。
# -*- coding:utf-8 -*- #-------------------------------------------------- # 程式:冷笑話爬蟲 # 版本:1.1 # 作者:執劍天涯 # 日期:2016-08-12 # 版本:Python 2.7.7 # 操作:點選回車鍵,點選q鍵 # 功能:輸出一個冷笑話作者,內容,點贊數,q退出程式 #-------------------------------------------------- import urllib import urllib2 import re page = 1 #中間變數,糗百頁數 num = 1 #中間變數,每一頁段子個數 def getPageItems(page): url = '網站的Url' + str(page) #資源定位 user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)' headers = { 'User-Agent' : user_agent } 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 content = response.read().decode('utf-8') pattern = re.compile('\<h2\>(.*?)\<\/h2\>.*?class\=\"content\"\>(.*?)\<\/div\>.*?img\ssrc\=\"(.*?)\".*?stats\-vote\"\>.*?\>(.*?)\<',re.S) #正則表示式,匹配出文欄位子內容 items = re.findall(pattern,content) #匹配出段子來 return items while True: items = getPageItems(page) print u'第%d頁\t本頁段子數量:%d' %(page,len(items)) for item in items: print u'正在讀取糗百,按回車檢視新段子,按Q退出...' input = raw_input() if input == 'q': #若輸入q,則停止程式 quit(0) haveImg = re.search('img',item[2]) if not haveImg: #找出不含圖片的段子 replaceBR = re.compile('<br/>') #html換行符 content = re.sub(replaceBR,'\n',item[1]) #替換換行符號 print u'本頁第%s個段子\t作者:%s\n內容:%s\n點贊:%s' %(num,item[0],content,item[3]) #列印段子 num += 1 #段子個數加1 num = 1 #段子個數初始化 page += 1 #頁碼加1