代碼如下:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
from scrapy.selector import Selector
from cnbeta.items import CnbetaItem
class CBSpider(CrawlSpider):
name = 'cnbeta'
allowed_domains = ['cnbeta.com']
start_urls = ['//www.jb51.net']
rules = (
Rule(SgmlLinkExtractor(allow=('/articles/.*/.htm', )),
callback='parse_page', follow=True),
)
def parse_page(self, response):
item = CnbetaItem()
sel = Selector(response)
item['title'] = sel.xpath('//title/text()').extract()
item['url'] = response.url
return item
實現蜘蛛爬蟲步驟
1.實例初級目標:從一個網站的列表頁抓取文章列表,然后存入數據庫中,數據庫包括文章標題、鏈接、時間
首先生成一個項目:scrapy startproject fjsen
先定義下items,打開items.py:
我們開始建模的項目,我們想抓取的標題,地址和時間的網站,我們定義域為這三個屬性。這樣做,我們編輯items.py,發現在開放目錄目錄。我們的項目看起來像這樣:
代碼如下:
from scrapy.item import Item, Field
class FjsenItem(Item):
# define the fields for your item here like:
# name = Field()
title=Field()
link=Field()
addtime=Field()
第二步:定義一個spider,就是爬行蜘蛛(注意在工程的spiders文件夾下),他們確定一個初步清單的網址下載,如何跟隨鏈接,以及如何分析這些內容的頁面中提取項目(我們要抓取的網站是http://www.fjsen.com/j/node_94962.htm 這列表的所有十頁的鏈接和時間)。
新建一個fjsen_spider.py,內容如下:
代碼如下:
#-*- coding: utf-8 -*-
from scrapy.spider import BaseSpider
from scrapy.selector import HtmlXPathSelector
from fjsen.items import FjsenItem
class FjsenSpider(BaseSpider):
name="fjsen"
allowed_domains=["fjsen.com"]
start_urls=['http://www.fjsen.com/j/node_94962_'+str(x)+'.htm' for x in range(2,11)]+['http://www.fjsen.com/j/node_94962.htm']
def parse(self,response):
hxs=HtmlXPathSelector(response)
sites=hxs.select('//ul/li')
items=[]
for site in sites:
新聞熱點
疑難解答