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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

最流行的python爬虫框架_Python最火爬虫框架Scrapy入门与实践

發布時間:2024/10/8 python 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 最流行的python爬虫框架_Python最火爬虫框架Scrapy入门与实践 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Scrapy框架簡介Scrapy 是用 Python 實現的一個為了爬取網站數據、提取結構性數據而編寫的應用框架。

Scrapy 常應用在包括數據挖掘,信息處理或存儲歷史數據等一系列的程序中。

通常我們可以很簡單的通過 Scrapy 框架實現一個爬蟲,抓取指定網站的內容或圖片。

Scrapy架構圖(綠線是數據流向):

- Scrapy Engine(引擎):負者Spider、ItemPipeline、Downloader、Scheduler中間的通訊,信號、數據轉遞等。 - Scheduler(調度器) :它負責接受引擊發送過來的Request請求,并按照一定的方式進行整理排列,入 隊,當引擎需要時,交還給引擎。 - Downloader (下載器):負責下載Scrapy Engine(引擎)發送的所有Requests請求,并將其獲取到的 Responses交還給Scrapy Engine(引擎) ,由引擎交給Spider來處理。 - Spider (爬蟲) :它負責處理所有Responses,從中分析提取數據,獲取Item字段需要的數據,并將需要 跟進的URL提交給引擎,再次進入Scheduler(調度器)。 - Item Pipeline(管道) :它負責處理Spider 中獲取到的Item ,并進行進行后期處理(詳細分析、過濾、 存儲等)的地方。 - Downloader Middlewares (下載中間件) : 你可以當作是一個可以自定義擴 展下載功能的組件。 - Spider Middlewares (Spider中間件) : 你可以理解為是一個可以自定擴展和操作引擎和Spider中 間通信的功能組件(比如進入Spider的Responses;和從Spider出去的Requests )

制作 Scrapy 爬蟲 一共需要4步:新建項目 (scrapy startproject xxx):新建一個新的爬蟲項目

明確目標 (編寫items.py):明確你想要抓取的目標

制作爬蟲 (spiders/xxspider.py):制作爬蟲開始爬取網頁

存儲內容 (pipelines.py):設計管道存儲爬取內容

入門案例

分析: 1. 創建一個Scrapy項目。 2. 定義提取的結構化數據(Item)。 3. 編寫爬取網站的Spider并且提取出結構化數據(Item)。 4. 編寫Item Pipelines 來存儲提取到的Item(即結構化數據)。

一、新建scrapy項目工程(scrapy startproject)

在開始爬取之前,必須創建一個新的Scrapy項目,進入自定義的項目目錄中。運行下列命令: 在pycharm界面中打開 View --> Tool Windows --> Terminal

==(1) 驗證scrapy是否成功安裝:== 在Terminal中輸入 scrapy 看看是否顯示scrapy信息 倘若出現:=='scrapy' 不是內部或外部命令,也不是可運行的程序或批處理文件。==

①、碰到這個問題,一般是pip重裝或者升級過導致的,這里的解決方案是:先運行pip uninstall scrapy卸載scrapy。 ②、這里會提示是否繼續,輸入y然后回車即可。 ③、接下來重新安裝scrapy,pip install scrapy。 ④、安裝完成之后,輸入scrapy運行測試

==(2)創建scrapy項目工程== 在Terminal中輸入:

# scrapy startproject + 自定義的項目名稱Scrapy startproject ITcast

成功創建項目的目錄為:

文件說明: - scrapy.cfg 項目的配置信息,主要為Scrapy命令行工具提供一個基礎的配置信息。(真正爬蟲相關的配置信息在settings.py文件中) - items.py:設置數據存儲模板,用于結構化數據,如:Django的Model - pipelines.py:數據處理行為,如:一般結構化的數據持久化 - settings.py:配置文件,如:遞歸的層數、并發數,延遲下載等 - spiders:爬蟲目錄,如:創建文件,編寫爬蟲規則

==(3)創建寫爬蟲的文件==

# scrapy genspider +名稱 + '網站'#建立爬蟲文件scrapy genspider itcast "itcast.cn"

結果為:

二、制作爬蟲

1. 爬數據

打開 ITcast/spider目錄里的 itcast.py,默認增加了下列代碼:

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

import scrapy

class ItcastSpider(scrapy.Spider):

name = 'itcast'

allowed_domains = ['itcast.cn']

start_urls = ['http://itcast.cn/']

def parse(self, response):

pass

也可以自行創建itcast.py并編寫上面的代碼,只不過使用命令可以免去編寫固定代碼的麻煩要建立一個Spider, 你必須用scrapy.Spider類創建一個子類,并確定了三個強制的屬性 和 一個方法。

name = "" :這個爬蟲的識別名稱,必須是唯一的,在不同的爬蟲必須定義不同的名字。

allow_domains = [] 是搜索的域名范圍,也就是爬蟲的約束區域,規定爬蟲只爬取這個域名下的網頁,不存在的URL會被忽略。

start_urls = () :爬取的URL元祖/列表。爬蟲從這里開始抓取數據,所以,第一次下載的數據將會從這些urls開始。其他子URL將會從這些起始URL中繼承性生成。

parse(self, response) :解析的方法,每個初始URL完成下載后將被調用,調用的時候傳入從每一個URL傳回的Response對象來作為唯一參數,主要作用如下: 負責解析返回的網頁數據(response.body),提取結構化數據(生成item) 生成需要下一頁的URL請求。

將start_urls的值修改為需要爬取的第一個url

start_urls = ['http://www.itcast.cn/channel/teacher.shtml']

2. 取數據

爬取整個網頁完畢,接下來的就是的取過程了,首先觀察頁面源碼:

xpath 方法,我們只需要輸入的 xpath 規則就可以定位到相應 html 標簽節點。 Chrome 給我們提供了一鍵獲取 xpath 地址的方法(右鍵->檢查->copy->copy xpath),如下圖:

/html/head/title: 選擇HTML文檔中

標簽內的 元素

/html/head/title/text(): 選擇上面提到的

元素的文字

//td: 選擇所有的

元素

//div[@class="mine"]: 選擇所有具有 class="mine" 屬性的 div 元素

3、編寫代碼

需要編寫四個相關聯的文件:itcast.py、items.py、settings.py、pipelines.py (管道文件)。 (1) itcast.py

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

import scrapy

#導入容器

from ITcast.items import ItcastItem

class ItcastSpider(scrapy.Spider):

# 爬蟲名 啟動爬蟲時需要的參數*必需

name = 'itcast'

# 爬取域范圍 允許爬蟲在這個域名下進行爬取(可選) 可以不寫

allowed_domains = ['itcast.cn']

#起始url列表 爬蟲的第一批請求,將求這個列表里獲取

start_urls = ['http://www.itcast.cn/channel/teacher.shtml']

def parse(self, response):

node_list = response.xpath("//div[@class='li_txt']")

for node in node_list:

#創建item字段對象,用來存儲信息

item = ItcastItem()

# .extract() 將xpath對象轉換圍毆Unicode字符串

name = node.xpath("./h3/text()").extract()

title = node.xpath("./h4/text()").extract()

info = node.xpath("./p/text()").extract()

item['name'] = name[0]

item['title'] = title[0]

item['info'] = info[0]

#返回提取到的每一個item數據 給管道文件處理,同時還會回來繼續執行后面的代碼

yield item

(2)items.py

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

# Define here the models for your scraped items

#

# See documentation in:

# https://doc.scrapy.org/en/latest/topics/items.html

import scrapy

class ItcastItem(scrapy.Item):

# define the fields for your item here like:

# 與itcast.py 定義的一一對應

name = scrapy.Field()

title = scrapy.Field()

info = scrapy.Field()

#pass

(3)settings.py 找到以下字段,取消字段的注釋。

ITEM_PIPELINES = {

'ITcast.pipelines.ItcastPipeline': 100, #值越小優先級越高

}

(4) pipelines.py (管道文件)

import json

class ItcastPipeline(object):

def __init__(self):

#python3保存文件 必須需要'wb' 保存為json格式

self.f = open("itcast_pipeline.json",'wb')

def process_item(self, item, spider):

#讀取item中的數據 并換行處理

content = json.dumps(dict(item),ensure_ascii=False) + ',\n'

self.f.write(content.encode('utf=8'))

return item

def close_spider(self,spider):

#關閉文件

self.f.close()

4、結果展示 執行文命令行: scrapy crawl + 爬蟲文件的名稱。 在Terminal中輸入 scrapy crawl itcast 執行scrapy項目,生成json文件:

4. 保存數據

scrapy保存信息的最簡單的方法主要有四種,-o 輸出指定格式的文件,命令如下:

scrapy crawl itcast -o teachers.json

csv 逗號表達式,可用Excel打開

scrapy crawl itcast -o teachers.csv

xml格式

scrapy crawl itcast -o teachers.xml

==對于了解更多實戰案例 和 如何爬取"下一頁面"的用法,可以參考文章==Scrapy糗事百科爬蟲實戰代碼分析

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的最流行的python爬虫框架_Python最火爬虫框架Scrapy入门与实践的全部內容,希望文章能夠幫你解決所遇到的問題。

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