日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Scrapy入门教程

發布時間:2025/4/14 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Scrapy入门教程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文參考Scrapy Tutorial里面的文檔,翻譯出來加上自己的理解,供大家學習。

在本文中,我們將學會如何使用Scrapy建立一個爬蟲程序,并爬取指定網站上的內容,這一切在Scrapy框架內實現將是很簡單輕松的事情。

本教程主要內容包括一下四步:

1.?創建一個新的Scrapy Project
2.?定義你需要從網頁中提取的元素Item
3.?實現一個Spider類,通過接口完成爬取URL和提取Item的功能
4.?實現一個Item PipeLine類,完成Item的存儲功能

新建工程

首先,為我們的爬蟲新建一個工程,首先進入一個目錄(任意一個我們用來保存代碼的目錄),執行:

1 scrapy startproject Domz

最后的Domz就是項目名稱。這個命令會在當前目錄下創建一個新目錄Domz,結構如下:

1 2 3 4 5 6 7 8 9 dmoz/scrapy.cfg dmoz/__init__.pyitems.pypipelines.pysettings.pyspiders/__init__.py

scrapy.cfg: 項目配置文件
items.py: 需要提取的數據結構定義文件
pipelines.py: 管道定義,用來對items里面提取的數據做進一步處理,如保存等
settings.py: 爬蟲配置文件
spiders: 放置spider的目錄

定義Item

在items.py里面定義我們要抓取的數據:

1 2 3 4 5 6 from scrapy.item import Item, Fieldclass DmozItem(Item):title = Field()link = Field()desc = Field()

這里我們需要獲取dmoz頁面上的標題,鏈接,描述,所以定義一個對應的items結構,不像Django里面models的定義有那么多種類的Field,這里只有一種就叫Field(),再復雜就是Field可以接受一個default值。

實現Spider

spider只是一個繼承字scrapy.spider.BaseSpider的Python類,有三個必需的定義的成員

name:?名字,這個spider的標識
start_urls:?一個url列表,spider從這些網頁開始抓取
parse():?一個方法,當start_urls里面的網頁抓取下來之后需要調用這個方法解析網頁內容,同時需要返回下一個需要抓取的網頁,或者返回items列表

所以在spiders目錄下新建一個spider,dmoz_spider.py:

1 2 3 4 5 6 7 8 9 10 class DmozSpider(BaseSpider):name = "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)

提取Item

提取數據到Items里面,主要用到XPath提取網頁數據:

scrapy有提供兩個XPath選擇器,HtmlXPathSelector和XmlXPathSelector,一個用于HTML,一個用于XML,XPath選擇器有三個方法

select(xpath): 返回一個相對于當前選中節點的選擇器列表(一個XPath可能選到多個節點)
extract(): 返回選擇器(列表)對應的節點的字符串(列表)
re(regex): 返回正則表達式匹配的字符串(分組匹配)列表
一種很好的方法是在Shell里面對XPath進行測試:

1 scrapy shell http://www.dmoz.org/Computers/Programming/Languages/Python/Books/

現在修改parse()方法看看如何提取數據到items里面去:

1 2 3 4 5 6 7 8 9 10 11 def parse(self, response):hxs = HtmlXPathSelector(response)sites = hxs.select('//ul/li')items = []for site in sites:item = DmozItem()item['title'] = site.select('a/text()').extract()item['link'] = site.select('a/@href').extract()item['desc'] = site.select('text()').extract()items.append(item)return items

實現PipeLine

PipeLine用來對Spider返回的Item列表進行保存操作,可以寫入到文件、或者數據庫等。

PipeLine只有一個需要實現的方法:process_item,例如我們將Item保存到一個文件中:

1 2 3 4 5 def __init__(self):self.file = open('jingdong.txt', 'wb')def process_item(self, item, spider):self.file.write(item['title'] + '\t'+ item['link'] + '\t' + item['desc']+'\n')

到現在,我們就完成了一個基本的爬蟲的實現,可以輸入下面的命令來啟動這個Spider:

1 scrapy crawl dmoz.org

原創文章,轉載請注明:轉載自CodeLogic[http://www.icodelogic.com]
本文鏈接地址:?http://www.icodelogic.com/?p=441


總結

以上是生活随笔為你收集整理的Scrapy入门教程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。