Scrapy爬虫(6)爬取银行理财产品并存入MongoDB(共12w+数据)
??本次Scrapy爬蟲的目標是爬取“融360”網(wǎng)站上所有銀行理財產(chǎn)品的信息,并存入MongoDB中。網(wǎng)頁的截圖如下,全部數(shù)據(jù)共12多萬條。
??我們不再過多介紹Scrapy的創(chuàng)建和運行,只給出相關(guān)的代碼。關(guān)于Scrapy的創(chuàng)建和運行,有興趣的讀者可以參考:Scrapy爬蟲(4)爬取豆瓣電影Top250圖片。
??修改items.py,代碼如下,用來儲存每個理財產(chǎn)品的相關(guān)信息,如產(chǎn)品名稱,發(fā)行銀行等。
??創(chuàng)建爬蟲文件bankSpider.py,代碼如下,用來爬取網(wǎng)頁中理財產(chǎn)品的具體信息。
import scrapy from bank.items import BankItemclass bankSpider(scrapy.Spider):name = 'bank'start_urls = ['https://www.rong360.com/licai-bank/list/p1']def parse(self, response):item = BankItem()trs = response.css('tr')[1:]for tr in trs:item['name'] = tr.xpath('td[1]/a/text()').extract_first()item['bank'] = tr.xpath('td[2]/p/text()').extract_first()item['currency'] = tr.xpath('td[3]/text()').extract_first()item['startDate'] = tr.xpath('td[4]/text()').extract_first()item['endDate'] = tr.xpath('td[5]/text()').extract_first()item['period'] = tr.xpath('td[6]/text()').extract_first()item['proType'] = tr.xpath('td[7]/text()').extract_first()item['profit'] = tr.xpath('td[8]/text()').extract_first()item['amount'] = tr.xpath('td[9]/text()').extract_first()yield itemnext_pages = response.css('a.next-page')if len(next_pages) == 1:next_page_link = next_pages.xpath('@href').extract_first() else:next_page_link = next_pages[1].xpath('@href').extract_first()if next_page_link:next_page = "https://www.rong360.com" + next_page_linkyield scrapy.Request(next_page, callback=self.parse)??為了將爬取的數(shù)據(jù)儲存到MongoDB中,我們需要修改pipelines.py文件,代碼如下:
# pipelines to insert the data into mongodb import pymongo from scrapy.conf import settingsclass BankPipeline(object):def __init__(self):# connect databaseself.client = pymongo.MongoClient(host=settings['MONGO_HOST'], port=settings['MONGO_PORT'])# using name and password to login mongodb# self.client.admin.authenticate(settings['MINGO_USER'], settings['MONGO_PSW'])# handle of the database and collection of mongodbself.db = self.client[settings['MONGO_DB']]self.coll = self.db[settings['MONGO_COLL']] def process_item(self, item, spider):postItem = dict(item)self.coll.insert(postItem)return item其中的MongoDB的相關(guān)參數(shù),如MONGO_HOST, MONGO_PORT在settings.py中設(shè)置。修改settings.py如下:
其中用戶名和密碼可以根據(jù)需要添加。
??接下來,我們就可以運行爬蟲了。運行結(jié)果如下:
共用時3小時,爬了12多萬條數(shù)據(jù),效率之高令人驚嘆!
??最后我們再來看一眼MongoDB中的數(shù)據(jù):
??Perfect!本次分享到此結(jié)束,歡迎大家交流~~
總結(jié)
以上是生活随笔為你收集整理的Scrapy爬虫(6)爬取银行理财产品并存入MongoDB(共12w+数据)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【60岁老人年审】老来网app养老保险年
- 下一篇: CentOS6.7 安装hadoop2.