當前位置:菜譜大全網 - 素菜食譜大全 - 抓取餓了麽官網數據scrapy

抓取餓了麽官網數據scrapy

Scrapy框架的初步應用

早上剛配置好scrappy框架,下午就迫不及待的做了個小演示來測試。原來scrappy真的很厲害。感覺完全掌握之後,就沒有爬不上去的數據了,O(∩_∩)O哈哈~。

以下步驟基於scrapy的成功安裝和配置。

1.創建新的Scrapy項目

打開cmd控制臺界面?

輸入:scrapy startproject myScrapy

以下文件包含在創建的項目中:

__init__。py:項目的初始化文件;?

Items.py:項目的目標文件?

Pipelines.py:項目的管道文件?

項目的設置文件?

Spiders/:壹個存儲爬蟲代碼的文件?

蜘蛛/__init__。py:爬蟲的初始單詞文件。

2.定義項目

Items是保存抓取數據的容器,使用方法類似於python字典,提供了額外的保護機制,避免拼寫錯誤導致的未定義字段錯誤,類似於ORM中的映射關系。

這是items.py中的默認代碼:

進口scrapyclass mySpiderItem(scrapy。項目):

#name = scrapy。字段()

通行證12345

我們修改壹下:(我需要爬到數據?姓名、職業和詳細信息)

進口scrapyclass MyspiderItem(scrapy。項目):

#這是您需要攀爬的數據中包含的字段。

名字=刺兒頭。字段()

title = scrapy。字段()

info = scrapy。Field() pass123456789

3.創建爬網程序文件

妳在線嗎?蜘蛛/?在下創建壹個文件?demo_spider.py?。?

然後NotePad++打開該文件並添加以下代碼:

導入scrapy#引用myspider目錄下item.py中的myspideritemtemfrommyspider . item導入myspideritemclass demo _ spider(scrap . spider):

# Crawler名稱,它必須是唯壹的。

name = "演示"

#爬行動物的爬行領域(我想得到傳智的數據)

Allowed_domains = ["itcast.cn"] #開頭的URL列表,是第壹批請求的地址。

start _ URLs =[" http/channel/teacher . shtml "

] #pase方法負責解析返回的數據,獲取需要提取的數據項,生成需要進壹步處理的請求對象URL。

定義解析(自身,響應):

#采集的數據集

node _ list = response . XPath("//div[@ class = ' Li _ txt ']")

對於node_list中的節點:

Item = MyspiderItem() #。extract()將xpath對象轉換成Unicode字符串。

name = node.xpath("。/h3/text()"。提取()

title = node.xpath("。/h4/text()")。提取()

info = node.xpath("。/p/text()")。提取()

項目['名稱'] =名稱[0]

項目['標題'] =標題[0]

Item['info'] = info[0] #yield:獲取壹個項數據後暫停循環,然後交給流水線,再繼續循環。

產量項目1234567891011213141516171819202122232425262728

4.修改設置文件

打開setting.py文件,將ROBOTSTXT_OBEY改為false,避免某些網站禁止爬蟲抓取數據。

# Obey robots . txt rules robots txt _ Obey = false 12

取消ITEM_PIPELINES的註釋,它定義了管道的優先級。值越小,優先級越高。

ITEM _ PIPELINES = { ' Tencent . PIPELINES . Tencent pipeline ':300

}123

5.修改管道執行文件

這是默認的管道文件:

導入jsonclass MyspiderPipeline(對象):

def process_item(自身、項目、蜘蛛):

通過?12345

我們將其修改如下:

導入jsonclass MyspiderPipeline(對象):

def __init__(self):

Self.f = open ("demo.json "," WB+") #這個方法是必須的。

def process_item(自身、項目、蜘蛛):

content = json.dumps(dict(item),確保_ascii = False) +",\n "

self . f . write(content . encode(" utf-8 "))返回項目def colse_spider(self,spider):

self . f . close()1234567891011121314

添加__init__方法。第壹次執行管道事件時,創建demo.json文件並打開它。

添加colse_spider方法,以便在管道事件結束時關閉文件。

修改process_item方法,將Demo_Spider中獲得的項目數據保存到demo.json文件中。

啟動蜘蛛

在mySpider目錄中,創建壹個數據文件夾來存儲已爬網的數據文件。

輸入:mkdir data,然後:cd data/?

使用命令:scrapy抓取演示?

您可以看到執行完成的詳細信息。

demo.json文件中提供了所需的數據。

抓取網站數據的簡單例子就是這樣完成的。相信經過深入研究,壹定可以實現非常強大的數據抓取功能。