Python爬蟲案例:利用Python爬取笑話網

來源:互聯網
上載者:User

標籤:解析   html   split   連結   www   函數   info   中文   一個   

   學校的伺服器可以上外網了,所以打算寫一個自動爬取笑話並發到bbs的東西,從網上搜了一個笑話網站,感覺大部分還不太冷,html結構如下:

 可以看到,笑話的連結清單都在<div class="list_title">裡面,用Regex可以把最近的幾個笑話地址找出來,再進到一個笑話頁面看下:

  每一個笑話頁面裡面是有多個小笑話組成的,全部在<span id="text110">標籤下,每個小笑話又單獨一個<p>包裹,這樣非常容易就可以把每個單獨笑話放到一個list中。由於我爬笑話的目的是每天白天一個小時發一個笑話,所以爬取20個是足夠的了,每個頁面平均有5個小笑話,爬4個頁面就OK啦。這裡有幾個細節,這個笑話網有的連結是有中文的,比如:

1 <a href="/jokehtml/冷笑話/2014051200030765.htm" target="_blank">讀書破萬卷,搞笑如有神</a>  

直接urllib.request.urlopen函數不能解析中文的URL,必須要urllib.parse先轉碼一下才能正確解析。還有一個細節是每段的小笑話之間是有換行的,用Regex的“.”是不能匹配分行符號的,需要改成“[\w\W]”才能匹配。好了,下面是代碼:

 1 import urllib.request   2 import urllib.parse   3 import re   4    5 rule_joke=re.compile(‘<span id=\"text110\">([\w\W]*?)</span>‘)   6 rule_url=re.compile(‘<a href=\"(.*?)\"target=\"_blank\" >‘)   7 mainUrl=‘http://www.jokeji.cn‘   8 url=‘http://www.jokeji.cn/list.htm‘   9   10 req=urllib.request.urlopen(url)  11 html=req.read().decode(‘gbk‘)  12 urls=rule_url.findall(html)  13 f=open(‘joke.txt‘,‘w‘)  14 for i in range(4):  15     url2=urllib.parse.quote(urls[i])  16     joke_url=mainUrl+url2  17     req2=urllib.request.urlopen(joke_url)  18     html2=req2.read().decode(‘gbk‘)  19     joke=rule_joke.findall(html2)  20     jokes=joke[0].split(‘<P>‘)  21       22     for i in jokes:  23         i=i.replace(‘</P>‘,‘‘)  24         i=i.replace(‘<BR>‘,‘‘)  25         i=i[2:]  26         f.write(i)  27 f.close()  

看下爬取的結果:

  這樣,每行是一個單獨的笑話,方便其他程式使用。

Python爬蟲案例:利用Python爬取笑話網

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.