天天看點

python爬蟲----(5. scrapy架構,綜合應用及其他)

    在分析和處理選擇内容時,還需注意頁面的JS可能會修改DOM樹結構。

(一)GitHub的使用

    由于之前使用Win,沒使用過shell的。目前隻是了解。以後再補充。找到幾個不錯的教程

        GitHub超詳細圖文攻略 http://blog.csdn.net/vipzjyno1/article/details/22098621  

        Github修改送出 http://www.360doc.com/content/12/0602/16/2660674_215429880.shtml

     以後再補充!!!!!

(二)FireFox的FireBug的使用

    之前一直使用FireFox的F12預設調試工具,感覺就挺爽的了。剛才換了FireBug一試,那簡直就更爽了。

    Tools-->Web Developer-->Get More Tools 然後,一般第一個就是 FireBug 安裝即可。之後按F12,就預設啟用了。

    功能簡直強大到沒朋友。可以直接擷取元素的xpath,css path。還可修改cookies.....

(三)豆瓣電影抓取  http://www.ituring.com.cn/article/114408 

    (1)items.py

# -*- coding: utf-8 -*-

from scrapy import Item, Field


class MovieItem(Item):
    name = Field()
    year = Field()
    score = Field()
    director = Field()
    classification = Field()
    actor = Field()                

    (2)spiders/movie_spider.py

# -*- coding: utf-8 -*-
from scrapy import Selector
from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
from douban.items import MovieItem


class MovieSpider(CrawlSpider):
    name = "movie"
    allowed_domains = ["douban.com"]
    start_urls = (
        'http://movie.douban.com/top250',
    )
    # rules可以自定義urls的抓取
    rules = (
        # 這個Rule隻是在start_urls的基礎上查找urls,并不是資料抓取的具體頁面
        Rule(SgmlLinkExtractor(allow=(r'http://movie.douban.com/top250\?start=\d+.*'))),
        # 這個Rule是具體資料抓取的頁面位址,callback是回調函數,負責處理傳回的response資料
        Rule(SgmlLinkExtractor(allow=(r'http://movie.douban.com/subject/\d+')), callback='parse_item'),
    )

    def parse_item(self, response):
        sel = Selector(response)
        item = MovieItem()
        # 此處選擇還可使用 css(), re() 等。還可利用FireBug協助選取
        item['name'] = sel.xpath('//span[@property="v:itemreviewed"]/text()').extract()
        item['year'] = sel.xpath('//span[@class="year"]/text()').extract()
        item['score'] = sel.xpath('//strong[@class="ll rating_num"]/text()').extract()
        item['director'] = sel.xpath('//a[@rel="v:directedBy"]/text()').extract()
        item['classification'] = sel.xpath('//span[@property="v:genre"]/text()').extract()
        item['actor'] = sel.xpath('//a[@rel="v:starring"]/text()').extract()
        return item                

    (3)Pipeline.py

# 将抓取的資料儲存到資料庫中,這裡有兩個版本
#一個是儲存到MySQL資料庫中
#另一個是儲存到非關系型資料庫MongoDB中                

版權聲明:本文為CSDN部落客「weixin_34347651」的原創文章,遵循CC 4.0 BY-SA版權協定,轉載請附上原文出處連結及本聲明。

原文連結:https://blog.csdn.net/weixin_34347651/article/details/91823496