91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

網絡爬蟲框架Scrapy怎么用

發布時間:2022-02-19 13:47:30 來源:億速云 閱讀:134 作者:小新 欄目:開發技術

這篇文章將為大家詳細講解有關網絡爬蟲框架Scrapy怎么用,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

Scrapy是用純Python實現一個為了爬取網站數據、提取結構性數據而編寫的應用框架,用途非常廣泛。

框架的力量,用戶只需要定制開發幾個模塊就可以輕松的實現一個爬蟲,用來抓取網頁內容以及各種圖片,非常之方便。

網絡爬蟲框架Scrapy怎么用

安裝

首先,確定你的電腦上已經安裝了 Python 3 以及對應的 pip。可以使用下面的命令查看:

$ python3 --version
Python 3.6.3
$ pip3 --version
pip 9.0.1 from /usr/local/lib/python3.6/site-packages (python 3.6)

如果沒有安裝的話,推薦使 Homebrew 這個工具來進行安裝。

pip 是 Python 的一個包管理工具,類似于 npm,可以在線安裝、卸載所有的第三方 Python 模塊,并自動處理依賴關系。這里我們使用下面的命令來安裝 Scrapy 模塊:

$ pip3 install scrapy

教程:一個抓取豆瓣電影 Top 250 的爬蟲

首先,我們使用下面的命令來創建并初始化 Scrapy 項目:

$ scrapy startproject doubanmovie

這樣便會在當前目錄下創建一個 doubanmovie 的爬蟲項目,其內部結構如下:

$ tree
.
├── doubanmovie
│   ├── __init__.py
│   ├── __pycache__
│   ├── items.py
│   ├── middlewares.py
│   ├── pipelines.py
│   ├── settings.py
│   └── spiders
│       ├── __init__.py
│       └── __pycache__
└── scrapy.cfg

其中:

scrapy.cfg 為 Scrapy 項目的核心配置文件

items.py 用于定義爬蟲程序爬取到的數據實體的屬性結構

piplines.py 用于定義爬蟲程序每次爬取到的數據實體進行后續處理的操作流程,比如寫入文件系統或數據庫

settings.py 為爬蟲程序的配置文件,可以在這里定義多個 pipline 和 middleware

spiders 文件夾中存放爬蟲文件

接著,我們需要在 items.py 文件中定義電影實體的屬性結構:

class DoubanmovieItem(scrapy.Item):
   # define the fields for your item here like:   # name = scrapy.Field()   rank = scrapy.Field() # 豆瓣排名   title = scrapy.Field() # 電影名稱   poster = scrapy.Field() # 電影海報   link = scrapy.Field() # 鏈接地址   rating = scrapy.Field() # 豆瓣評分   pass

然后,我們使用下面的命令來創建一個名為 doubanspider 的爬蟲程序:

$ scrapy genspider moviespider douban.com

運行之后會在 spiders 目錄下生成一個名為 moviespider.py 的爬蟲文件,內部定義了爬蟲的名稱、作用域及起始 URL 等基本信息,以及一個解析函數,該函數的主要功能便是通過 XPath 分析頁面中的 HTML 元素,并將解析結果輸出:

class MoviespiderSpider(scrapy.Spider):
   name = 'moviespider'   allowed_domains = ['douban.com']
   start_urls = ['https://movie.douban.com/top250']

   def parse(self, response):
       movie_items = response.xpath('//div[@class="item"]')
       for item in movie_items:
           movie = DoubanmovieItem()

           movie['rank'] = item.xpath('div[@class="pic"]/em/text()').extract()
           movie['title'] = item.xpath('div[@class="info"]/div[@class="hd"]/a/span[@class="title"][1]/text()').extract()
           movie['poster'] = item.xpath('div[@class="pic"]/a/img/@src').extract()
           movie['link'] = item.xpath('div[@class="info"]/div[@class="hd"]/a/@href').extract()
           movie['rating'] = item.xpath('div[@class="info"]/div[@class="bd"]/div[@class="star"]/span[@class="rating_num"]/text()').extract()

           yield movie
       pass

通過爬蟲解析后的實體數據,會通過一種 Pipeline 的過程將結果進行打印輸出、存入文件或數據庫等:

class DoubanmoviePipeline(object):
   def process_item(self, item, spider):
       print('豆瓣排名:' + item['rank'][0])
       print('電影名稱:' + item['title'][0])
       print('鏈接地址:' + item['link'][0])
       print('豆瓣評分:' + item['rating'][0] + '\n')

       return item

由于豆瓣電影的網站設置了防爬蟲技術,所以在完成上述步驟后運行爬蟲會出現 403 的 HTTP 狀態碼。于是我們需要在發送的請求中加入 User Agent 信息來偽裝成一個瀏覽器:

from scrapy.downloadermiddlewares.useragent import UserAgentMiddleware

class FakeUserAgentMiddleware(UserAgentMiddleware):
   def process_request(self, request, spider):
       request.headers.setdefault('User-Agent', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36')

最后,我們將上述修改寫入配置文件:

# Enable or disable downloader middlewares# See http://scrapy.readthedocs.org/en/latest/topics/downloader-middleware.htmlDOWNLOADER_MIDDLEWARES = {
   'scrapy.contrib.downloadermiddleware.useragent.UserAgentMiddleware': None,
   'doubanmovie.fakeuseragent.FakeUserAgentMiddleware': 543,
}# Configure item pipelines# See http://scrapy.readthedocs.org/en/latest/topics/item-pipeline.htmlITEM_PIPELINES = {
   'doubanmovie.pipelines.DoubanmoviePipeline': 300,
}

運行 scrapy crawl moviespider 命令,便會在控制臺中輸出爬取到的數據。

關于“網絡爬蟲框架Scrapy怎么用”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

澄迈县| 苏州市| 浦县| 客服| 舟曲县| 托克逊县| 兴安盟| 灵寿县| 绥中县| 沐川县| 西林县| 长子县| 焦作市| 酒泉市| 凉城县| 蒲江县| 壶关县| 东乡县| 博白县| 武山县| 故城县| 黄梅县| 来凤县| 汤阴县| 广水市| 舞钢市| 图们市| 锡林郭勒盟| 鸡西市| 台中市| 石屏县| 当雄县| 浏阳市| 武邑县| 凤冈县| 汤原县| 西安市| 南乐县| 马公市| 垦利县| 罗甸县|