爬蟲7:Scrapy-爬網頁

用Scrapy作爬蟲分爲四步html

  • 新建項目 (Project):新建一個新的爬蟲項目
  • 明確目標(Items):明確你想要抓取的目標
  • 製做爬蟲(Spider):製做爬蟲開始爬取網頁
  • 存儲內容(Pipeline):設計管道存儲爬取內容

 

上一章節作了建立項目,接着用上一次建立的項目來爬取網頁python

網上不少教程都是用的dmoz.org這個網站來作實驗,因此我也用這個來作了實驗api

 

明確目標

在Scrapy中,items是用來加載抓取內容的容器dom

咱們想要的內容是python2.7

  • 名稱(name)
  • 連接(url)
  • 描述(description)

在tutorial目錄下會有items.py文件,在默認的代碼後面添加上咱們的代碼scrapy

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

# Define here the models for your scraped items
#
# See documentation in:
# http://doc.scrapy.org/en/latest/topics/items.html
from scrapy.item import Item, Field
import scrapy


class TutorialItem(scrapy.Item):
    # define the fields for your item here like:
    # name = scrapy.Field()

#下面是我本身加的 class DmozItem(Item): title = Field() link = Field() desc = Field()

 

 

製做爬蟲

爬蟲仍是老規矩,先爬再取。也就是說先獲取整個網頁的內容,而後取出你須要的部分ide

在tutorial\spiders目錄下創建python文件,命名爲dmoz_spider.py網站

目前的代碼以下url

from scrapy.spiders import Spider

class DmozSpider(Spider):
    name = "dmoz"
    allowed_domains = ["dmoz.org"]
    start_urls= [
         "http://www.dmoz.org/Computers/Programming/Languages/Python/Books/",
         "http://www.dmoz.org/Computers/Programming/Languages/Python/Resources/"
    ]
    def parse(self,response):
        filename=response.url.split("/")[-2]
        open(filename,'wb').write(response.body)

name是爬蟲的名字,必須惟一spa

allowed_domains是爬取的限制範圍,意思只爬取該域名下的內容

start_urls是爬取的url列表,子URLl將會從這些起始URL中繼承性生成

parse大概能夠理解爲對response的預處理

 

好啦,爬蟲寫好了,而後運行,在tutorial目錄下打開cmd窗口

輸入

scrapy crawl dmoz

哦豁,報錯了

娘度了下,是由於沒有win32api這個模塊

我用的是python2.7 32位,因此下載pywin32-219.win32-py2.7.exe這個文件

記得不要下錯了,分32位和64位的,下載成64位的話會繼續報

dll load failed: 1% 不是有效的win32的

錯誤

配置好環境後,從新運行

成功

tutorial目錄下多了book和Resources兩個文件,這就是爬取下來的文件

相關文章
相關標籤/搜索