抓取糗事百科的笑話哈哈
#面向過程版本
import requests
import re
from bs4 import BeautifulSoup
def getHTMLText(url):
try:
headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0'}
r=requests.get(url,timeout=30,headers=headers)
r.raise_for_status()
r.encoding='utf-8'
return r.text
except:
raise
def parseHTML(ilt,html):
soup=BeautifulSoup(html,'html.parser')
articleDiv=soup.find_all('div',attrs={'class':'article block untagged mb15'})
for item in articleDiv:
try:
title=item.h2.string
article=item.span.get_text()
joy=item.find('span',attrs={'class':'stats-vote'}).get_text()
comment=item.find('a',attrs={'class':'qiushi_comments'}).get_text()
ilt.append([title,article,joy,comment])
except:
continue
def printArticle(ilt):
pattern=u'{0}\n{1}\n{2}{3}\n\n' #將編碼設(shè)置為Unicode編碼,好像很好使
for every in ilt:
print(pattern.format(every[0],every[1],every[2],every[3]))
with open('joke.txt','a',encoding='utf-8') as f:
f.write(every[1]+'\n'*2)
def main():
start_url='http://www.qiushibaike.com/hot/page/'
pageNumber=1
url=start_url+str(pageNumber)
html=getHTMLText(url)
#print(html)
ilt=[]
parseHTML(ilt,html)
printArticle(ilt)
main()
#用類和實例來做
import re
import requests
from bs4 import BeautifulSoup
class QSBK(object):
def __init__(self):
self.pageNumber=2
self.start_url='http://www.qiushibaike.com/hot/page/'
self.url=self.start_url+str(self.pageNumber)
self.ilt=[]
self.headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0'}
def getHTMLText(self):
try:
r=requests.get(self.url,timeout=20,headers=self.headers)
r.raise_for_status()
r.encoding='utf-8'
return r.text
except:
return 'ERROR'
def parsePage(self):
soup=BeautifulSoup(self.getHTMLText(),'html.parser')
articleDiv=soup.find_all('div',attrs={'class':'article block untagged mb15'})
for item in articleDiv:
try:
title=item.h2.string
article=item.span.get_text()
joy=item.find('span',attrs={'class':'stats-vote'}).get_text()
comment=item.find('a',attrs={'class':'qiushi_comments'}).get_text()
self.ilt.append([title,article,joy,comment])
except:
continue
def printJoke(self):
pattern=u'{0}\n{1}\n{2}{3}\n\n' #將編碼設(shè)置為Unicode編碼钟哥,好像很好使
for every in self.ilt:
print(pattern.format(every[0],every[1],every[2],every[3]))
with open('joke.txt','a',encoding='utf-8') as f:
f.write(every[1]+'\n'*2)
spider=QSBK()
spider.getHTMLText()
spider.parsePage()
spider.printJoke()
python 爬取糗事百科
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
- 文/潘曉璐 我一進店門焰扳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人误续,你說我怎么就攤上這事吨悍。” “怎么了蹋嵌?”我有些...
- 文/不壞的土叔 我叫張陵育瓜,是天一觀的道長。 經(jīng)常有香客問我栽烂,道長躏仇,這世上最難降的妖魔是什么? 我笑而不...
- 正文 為了忘掉前任腺办,我火速辦了婚禮焰手,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘菇晃。我一直安慰自己册倒,他們只是感情好,可當(dāng)我...
- 文/花漫 我一把揭開白布磺送。 她就那樣靜靜地躺著驻子,像睡著了一般。 火紅的嫁衣襯著肌膚如雪估灿。 梳的紋絲不亂的頭發(fā)上崇呵,一...
- 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼叠骑!你這毒婦竟也來了李皇?” 一聲冷哼從身側(cè)響起,我...
- 正文 年R本政府宣布,位于F島的核電站变勇,受9級特大地震影響恤左,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜搀绣,卻給世界環(huán)境...
- 文/蒙蒙 一飞袋、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧链患,春花似錦巧鸭、人聲如沸。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至贸毕,卻和暖如春郑叠,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背明棍。 一陣腳步聲響...
推薦閱讀更多精彩內(nèi)容
- 以前一直想學(xué)的爬蟲细办,這兩天閑來,終于有所眉目 環(huán)境是jupyter和spyder 用的python3.5 先上代碼...
- 最近在學(xué)習(xí)python爬蟲馒铃,看到了崔大神的博客蟹腾,由于他使用的python2.x,于是自己就想用python3實現(xiàn)一...
- 主要功能 代碼 結(jié)果 擴展 封裝成一個爬取糗事百科段子的類 原理: 使用self.stories裝入每頁的段子數(shù)組...
- 利用python寫一個爬蟲区宇,爬取百度百科的某一個詞條下面的全部鏈接和每一個鏈接內(nèi)部的詞條主題和摘要娃殖。利用reque...