首頁 > 後端開發 > Python教學 > Python 製作糗事百科爬蟲

Python 製作糗事百科爬蟲

高洛峰
發布: 2017-02-24 16:07:09
原創
1360 人瀏覽過

早上起來閒來無事做,莫名其妙的就彈出了糗事百科的段子,轉念一想既然你送上門來,那我就寫個爬蟲到你網站上爬一爬吧,一來當做練練手,二來也算找點樂子。

其實這兩天也正在接觸資料庫的內容,可以將爬取下來的資料保存在資料庫中,以待以後的利用。好了,廢話不多說了,先來看看程式爬取的資料結果

Python 制作糗事百科爬虫

#值得一提的是,我在程式中想一下子爬取糗事百科30 頁的內容,但是出現了連接錯誤,當我把頁數降到20 頁的時候,程序就可以正常的跑起來了,不知道是什麼原因,渴望知道的大神可以告訴我一聲,感激不盡。

程式非常簡單,直接上原始碼咯

# coding=utf8

import re
import requests
from lxml import etree
from multiprocessing.dummy import Pool as ThreadPool
import sys

reload(sys)
sys.setdefaultencoding('utf-8')


def getnewpage(url, total):
 nowpage = int(re.search('(\d+)', url, re.S).group(1))
 urls = []

 for i in range(nowpage, total + 1):
  link = re.sub('(\d+)', '%s' % i, url, re.S)
  urls.append(link)

 return urls


def spider(url):
 html = requests.get(url)
 selector = etree.HTML(html.text)

 author = selector.xpath('//*[@id="content-left"]/p/p[1]/a[2]/@title')
 content = selector.xpath('//*[@id="content-left"]/p/p[2]/text()')
 vote = selector.xpath('//*[@id="content-left"]/p/p[3]/span/i/text()')

 length = len(author)
 for i in range(0, length):
  f.writelines('作者 : ' + author[i] + '\n')
  f.writelines('内容 :' + str(content[i]).replace('\n','') + '\n')
  f.writelines('支持 : ' + vote[i] + '\n\n')


if __name__ == '__main__':

 f = open('info.txt', 'a')
 url = 'http://www.qiushibaike.com/text/page/1/'
 urls = getnewpage(url, 20)

 pool = ThreadPool(4)
 pool.map(spider,urls)
 f.close()
登入後複製

如果其中有不懂得部分,可以依序參考我的前三篇文章。

更多Python 製作糗事百科爬蟲相關文章請追蹤PHP中文網!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板