色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何使用Scrapy爬取網(wǎng)站數(shù)據(jù)

zhKF_jqr_AI ? 來源:未知 ? 作者:李倩 ? 2018-07-26 09:06 ? 次閱讀

編者按:斯克里普斯研究所數(shù)據(jù)科學(xué)家Michael Galarnyk介紹了如何使用Scrapy爬取網(wǎng)站數(shù)據(jù)。

我剛開始在業(yè)界工作時,首先意識到的一件事情是,有時候需要自己收集、整理、清洗數(shù)據(jù)。在這篇教程中,我們將從一個眾籌網(wǎng)站FundRazr收集數(shù)據(jù)。和許多網(wǎng)站一樣,這個網(wǎng)站有自己的結(jié)構(gòu)、形式,還有眾多有用的數(shù)據(jù),但卻沒有一個結(jié)構(gòu)化的API,所以獲取數(shù)據(jù)并不容易。在這篇教程中,我們將爬取網(wǎng)站數(shù)據(jù),將其整理為有序的形式,以創(chuàng)建我們自己的數(shù)據(jù)集。

我們將使用Scrapy,一個構(gòu)建網(wǎng)頁爬蟲的框架。Scrapy可以幫助我們創(chuàng)建和維護(hù)網(wǎng)頁爬蟲。它讓我們可以專注于使用CSS選擇器和XPath表達(dá)式提取數(shù)據(jù),更少操心爬蟲的內(nèi)部工作機(jī)制。這篇教程比Scrapy官方教程要深入一點,希望你在讀完這篇教程后,碰到需要抓取有一定難度的數(shù)據(jù)的情況時,也能自行完成。好了,讓我們開始吧。

預(yù)備

如果你已經(jīng)安裝了anaconda和google chrome(或Firefox),可以跳過這一節(jié)。

安裝Anaconda。你可以從官網(wǎng)下載anaconda自行安裝,也可以參考我之前寫的anaconda安裝教程(Mac、Windows、Ubuntu、環(huán)境管理)。

安裝Scrapy。其實Anaconda已經(jīng)自帶了Scrapy,不過如果遇到問題,你也可以自行安裝:

conda install -c conda-forge scrapy

確保你安裝了chrome或firefox. 在這篇教程中,我將使用chrome.

創(chuàng)建新Scrapy項目

用startproject命令可以創(chuàng)建新項目:

該命令會創(chuàng)建一個fundrazr目錄:

fundrazr/

scrapy.cfg # 部署配置文件

fundrazr/ # 項目的Python模塊

__init__.py

items.py # 項目item定義

pipelines.py # 項目pipeline文件

settings.py # 項目設(shè)置文件

spiders/ # 爬蟲目錄

__init__.py

scrapy startproject fundrazr

使用chrome(或firefox)的開發(fā)者工具查找初始url

在爬蟲框架中,start_urls是爬蟲開始抓取的url列表。我們將通過start_urls列表中的每個元素得到單個項目頁面的鏈接。

下圖顯示,選擇的類別不同,初始url也不一樣。黑框高亮的部分是待抓取的類別。

在本教程中,start_urls列表中的第一項是:

https://fundrazr.com/find?category=Health

接下來,我們將看看如何訪問下一頁,并將相應(yīng)的url加入start_urls。

第二個url是:

https://fundrazr.com/find?category=Health&page=2

下面是創(chuàng)建start_urls列表的代碼。其中,npages指定翻頁的頁數(shù)。

start_urls = ["https://fundrazr.com/find?category=Health"]

npages = 2

for i in range(2, npages + 2 ):

start_urls.append("https://fundrazr.com/find?category=Health&page="+str(i)+"")

使用Srapy shell查找單個項目頁面

使用Scrapy shell是學(xué)習(xí)如何基于Scrapy提取數(shù)據(jù)的最好方法。我們將使用XPaths,XPaths可以用來選擇HTML文檔中的元素。

我們首先需要嘗試獲取單個項目頁面鏈接的XPath。我們將利用瀏覽器的檢查元素。

我們將使用XPath提取下圖中紅框內(nèi)的部分。

我們首先啟動Scrapy shell:

scrapy shell 'https://fundrazr.com/find?category=Health'

在Scrapy shell中輸入以下代碼:

response.xpath("http://h2[contains(@class, 'title headline-font')]/a[contains(@class, 'campaign-link')]//@href").extract()

使用exit()退出Scrapy shell.

單個項目頁面

之前我們介紹了如何提取單個項目頁面鏈接。現(xiàn)在我們將介紹如何提取單個項目頁面上的信息

首先我們前往將要抓取的單個項目頁面(鏈接見下)。

使用上一節(jié)提到的方法,檢查頁面的標(biāo)題。

現(xiàn)在我們將再次使用Scrapy shell,只不過這次是在單個項目頁面啟動。

scrapy shell 'https://fundrazr.com/savemyarm'

提取標(biāo)題的代碼是:

response.xpath("http://div[contains(@id, 'campaign-title')]/descendant::text()").extract()[0]

頁面其他部分同理:

# 籌款總額

response.xpath("http://span[contains(@class,'stat')]/span[contains(@class, 'amount-raised')]/descendant::text()").extract()

# 籌款目標(biāo)

response.xpath("http://div[contains(@class, 'stats-primary with-goal')]//span[contains(@class, 'stats-label hidden-phone')]/text()").extract()

# 幣種

response.xpath("http://div[contains(@class, 'stats-primary with-goal')]/@title").extract()

# 截止日期

response.xpath("http://div[contains(@id, 'campaign-stats')]//span[contains(@class,'stats-label hidden-phone')]/span[@class='nowrap']/text()").extract()

# 參與數(shù)

response.xpath("http://div[contains(@class, 'stats-secondary with-goal')]//span[contains(@class, 'donation-count stat')]/text()").extract()

# 故事

response.xpath("http://div[contains(@id, 'full-story')]/descendant::text()").extract()

# url

response.xpath("http://meta[@property='og:url']/@content").extract()

Items

網(wǎng)頁抓取的主要目標(biāo)是從無結(jié)構(gòu)的來源提取出結(jié)構(gòu)信息。Scrapy爬蟲以Python字典的形式返回提取數(shù)據(jù)。盡管Python字典既方便又熟悉,但仍然不夠結(jié)構(gòu)化:字段名容易出現(xiàn)拼寫錯誤,返回不一致的信息,特別是在有多個爬蟲的大型項目中。因此,我們定義Item類來(在輸出數(shù)據(jù)之前)存儲數(shù)據(jù)。

import scrapy

classFundrazrItem(scrapy.Item):

campaignTitle = scrapy.Field()

amountRaised = scrapy.Field()

goal = scrapy.Field()

currencyType = scrapy.Field()

endDate = scrapy.Field()

numberContributors = scrapy.Field()

story = scrapy.Field()

url = scrapy.Field()

將其保存在fundrazr/fundrazr目錄下(覆蓋原本的items.py文件)。

爬蟲

我們定義爬蟲類,供Scrapy使用,以抓取一個網(wǎng)站(或一組網(wǎng)站)的信息。

# 繼承scrapy.Spider類

classFundrazr(scrapy.Spider):

# 指定爬蟲名稱,運行爬蟲時要要到

name = "my_scraper"

# 定義start_urls、npages

# 具體定義見前

def parse(self, response):

for href in response.xpath("http://h2[contains(@class, 'title headline-font')]/a[contains(@class, 'campaign-link')]//@href"):

# 加上協(xié)議名稱

url = "https:" + href.extract()

# 異步抓取

yield scrapy.Request(url, callback=self.parse_dir_contents)

# 回調(diào)函數(shù)定義

def parse_dir_cntents(self, response):

item = FundrazrItem()

# 下面依次定義item的各字段,

# 具體定義參見前面的XPath表達(dá)式

yield item

為了節(jié)約篇幅,以上代碼僅僅呈現(xiàn)了爬蟲的大致結(jié)構(gòu),省略了導(dǎo)入依賴的語句以及前幾節(jié)已經(jīng)涉及的具體代碼。完整代碼可以從我的GitHub倉庫獲取:mGalarnyk/Python_Tutorials

爬蟲代碼保存在fundrazr/spiders目錄下,文件命名為fundrazr_scrape.py。

運行爬蟲

在fundrazr/fundrazr目錄下輸入:

scrapy crawl my_scraper -o MonthDay_Year.csv

數(shù)據(jù)輸出文件位于fundrazr/fundrazr目錄下。

我們的數(shù)據(jù)

輸出的數(shù)據(jù)應(yīng)該類似下面的圖片。由于網(wǎng)站不斷地更新,因此具體的眾籌項目會不同。另外,項目記錄間可能會有空行,這是excel解析csv文件時會出現(xiàn)的現(xiàn)象。

我將npages從2改到了450,并增加了download_delay = 2,抓取了約6000個項目,保存為MiniMorningScrape.csv文件。你可以從我的GitHu倉庫直接下載這一文件:mGalarnyk/Python_Tutorials

結(jié)語

創(chuàng)建數(shù)據(jù)集可能需要大費周章,而在學(xué)習(xí)數(shù)據(jù)科學(xué)時卻常常被忽略。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 數(shù)據(jù)集
    +關(guān)注

    關(guān)注

    4

    文章

    1208

    瀏覽量

    24689
  • 選擇器
    +關(guān)注

    關(guān)注

    0

    文章

    107

    瀏覽量

    14534
  • 爬蟲
    +關(guān)注

    關(guān)注

    0

    文章

    82

    瀏覽量

    6867

原文標(biāo)題:使用Scrapy自建數(shù)據(jù)集

文章出處:【微信號:jqr_AI,微信公眾號:論智】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    Crawler:基于urllib+requests庫+偽裝瀏覽器實現(xiàn)國內(nèi)知名招聘網(wǎng)站信息(2018430之前)并保存在csv文件內(nèi)

    Crawler:基于urllib+requests庫+偽裝瀏覽器實現(xiàn)國內(nèi)知名招聘網(wǎng)站,上海地區(qū)與機(jī)器學(xué)習(xí)有關(guān)的***(2018430之前)并保存在csv文件內(nèi)
    發(fā)表于 12-19 17:02

    采用xpath網(wǎng)站內(nèi)容

    xpathmooc網(wǎng)課程
    發(fā)表于 04-11 12:01

    python音頻文件的步驟

    python爬蟲音頻文件
    發(fā)表于 08-22 14:23

    scrapy爬蟲小說方法

    scrapy小說(一)
    發(fā)表于 09-19 06:29

    爬蟲可以采集哪些數(shù)據(jù)

    一、爬蟲可以采集哪些數(shù)據(jù)   1.圖片、文本、視頻   商品(店鋪)評論以及各種圖片網(wǎng)站,獲得圖片資源以及評論文本數(shù)據(jù)。   掌握正確的
    發(fā)表于 10-15 17:25

    Python豆瓣電影信息和存儲數(shù)據(jù)

    Python——豆瓣電影信息并存儲數(shù)據(jù)
    發(fā)表于 03-11 11:19

    豆瓣電影Top250信息

    ) # 判斷是否取到數(shù)據(jù),并調(diào)用解析函數(shù) if html:for item in parsePage(html):writeFile(item)# 判斷當(dāng)前執(zhí)行是否為主程序運行,并遍歷調(diào)用主函數(shù)
    發(fā)表于 03-23 15:47

    Python CSDN的極客頭條

    Python 如何CSDN的極客頭條呢?
    的頭像 發(fā)表于 03-21 14:58 ?4824次閱讀
    Python <b class='flag-5'>爬</b><b class='flag-5'>取</b>CSDN的極客頭條

    python爬蟲框架Scrapy實戰(zhàn)案例!

    tart_urls:的URL列表。爬蟲從這里開始抓取數(shù)據(jù),所以,第一次下載的數(shù)據(jù)將會從這些urls開始。其他子URL將會從這些起始URL中繼承性生成。
    的頭像 發(fā)表于 12-07 16:12 ?2.3w次閱讀
    python爬蟲框架<b class='flag-5'>Scrapy</b>實戰(zhàn)案例!

    數(shù)據(jù)時代我們的隱私還是隱私嗎

    什么數(shù)據(jù)行為如何約束以及怎么使用
    發(fā)表于 12-11 14:33 ?3994次閱讀

    如何安裝第三方模塊4K壁紙

    如何安裝第三方模塊4K壁紙
    發(fā)表于 12-27 10:39 ?0次下載

    電影網(wǎng)最新電影資源鏈接地址[1]

    www.ygdy8電影資源的過程:一、電影網(wǎng)電影資源鏈接,代碼段:# -*- coding: utf-8 -*-from bs4 import BeautifulSoupimp
    發(fā)表于 01-10 13:36 ?0次下載
    <b class='flag-5'>爬</b><b class='flag-5'>取</b>電影網(wǎng)最新電影資源鏈接地址[1]

    如何用python抖音app數(shù)據(jù)

    記錄一下如何用pythonapp數(shù)據(jù),本文以抖音視頻app為例。
    的頭像 發(fā)表于 03-16 09:07 ?5328次閱讀

    Scrapy怎么Python文件

    我們介紹了Scrapy框架運行基本原理,緊接著我們介紹了如何利用Scrapy文本數(shù)據(jù)
    的頭像 發(fā)表于 02-24 15:16 ?589次閱讀
    <b class='flag-5'>Scrapy</b>怎么<b class='flag-5'>爬</b><b class='flag-5'>取</b>Python文件

    使用Scrapy抓取房地產(chǎn)站點數(shù)據(jù)采集

    使用 Scrapy 抓取房地產(chǎn)站點數(shù)據(jù)采集
    的頭像 發(fā)表于 07-05 16:30 ?514次閱讀
    主站蜘蛛池模板: 亞洲人妻AV無碼在線視頻| 优优色影院| 国产午夜福利片| 沈芯语麻豆0076 视频| AV72啪啪网站| 女子扒开腿让男生桶爽| 99热这里有精品| 欧美性appstin孕妇| videosgrati欧美另类| 欧美亚洲视频在线二区| WWW国产精品内射熟女| 秋霞电影在线观看午夜伦| 别停好爽好深好大好舒服视频| 欧美午夜特黄AAAAAA片| 草莓视频在线免费观看| 色久久久综合88一本道| 国产成人高清亚洲一区app| 偷拍久久国产视频免费| 处初女处夜情视频在线播放| 欧美精品九九99久久在观看| 99久久99久久精品国产片果冻| 女教师二十三岁| 成人AV精品视频| 亚州综合网| 久久这里只有是精品23| 98久久人妻少妇激情啪啪| 日本国产黄色片| 国产人成精品综合欧美成人| 伊人精品影院| 日本色女孩影院| 国产亚洲欧洲日韩在线三区| 在线AV国产传媒18精品免费| 欧洲电影巜肉欲丛林| 国产手机精品一区二区| 真实农村女人野外自拍照片| 欧美精品一区二区蜜臀亚洲| 国产精品高清视频在线| 中文中幕无码亚洲在线| 视频专区亚洲欧美日韩| 老司机午夜影院味味| 国产精品女上位在线观看|