Python干貨:用Scrapy爬電商網(wǎng)站

      網(wǎng)友投稿 1159 2025-03-31

      電商老板,經(jīng)理都可能需要爬自己經(jīng)營(yíng)的網(wǎng)站,目的是監(jiān)控網(wǎng)頁(yè),追蹤網(wǎng)站流量,尋找優(yōu)化機(jī)會(huì)等。

      對(duì)于其中的每一項(xiàng),均可以通過離散工具,網(wǎng)絡(luò)抓取工具和服務(wù)來(lái)幫助監(jiān)控網(wǎng)站。只需相對(duì)較少的開發(fā)工作,就可以創(chuàng)建自己的站點(diǎn)爬網(wǎng)程序和站點(diǎn)監(jiān)視系統(tǒng)。

      構(gòu)建自定義的爬蟲站點(diǎn)和監(jiān)控程序, 第一步是簡(jiǎn)單地獲取網(wǎng)站上所有頁(yè)面的列表。本文將介紹如何使用Python編程語(yǔ)言和一個(gè)名為scrapy的整潔的Web爬網(wǎng)框架來(lái)輕松生成這些頁(yè)面的列表。

      你需要一個(gè)服務(wù)器,Python和scrapy

      這是一個(gè)開發(fā)項(xiàng)目。需要安裝Python和Scrapy的服務(wù)器。還需要通過終端應(yīng)用程序或SSH客戶端對(duì)該服務(wù)器的命令行進(jìn)行訪問。還可以從Python.org的文檔部分獲取有關(guān)安裝Python的信息。Scrapy網(wǎng)站還有很好的安裝文檔。請(qǐng)確認(rèn)您的服務(wù)器已準(zhǔn)備好安裝Python和Scrapy。

      創(chuàng)建一個(gè)Scrapy項(xiàng)目

      使用像Putty for Windows這樣的SSH客戶端或Mac,Linux計(jì)算機(jī)上的終端應(yīng)用程序,導(dǎo)航到要保留Scrapy項(xiàng)目的目錄。使用內(nèi)置的Scrapy命令startproject,我們可以快速生成所需的基本文件。

      本文將抓取一個(gè)名為Business Idea Daily的網(wǎng)站,因此將該項(xiàng)目命名為“bid”。

      生成一個(gè)新的Scrapy Web Spider

      為方便起見,Scrapy還有另一個(gè)命令行工具,可以自動(dòng)生成新的Web Spider。

      scrapy?genspider?-t?crawl?getbid?businessideadaily.com

      第一個(gè)術(shù)語(yǔ),scrapy,參考Scrapy框架。接下來(lái),有g(shù)enspider命令告訴Scrapy我們想要一個(gè)新的web spider,或者,如果您愿意,還想要一個(gè)新的網(wǎng)絡(luò)爬蟲。

      Python干貨:用Scrapy爬電商網(wǎng)站

      -t告訴Scrapy我們想要選擇一個(gè)特定的模板。genspider命令可以生成四個(gè)通用Web Spider模板中的任何一個(gè):basic,crawl,csvfeed和xmlfeed。直接在-t之后,我們指定了想要的模板。在這個(gè)例子中,我們將創(chuàng)建被Scrapy稱為CrawlSpider的模板。 “getbid”這個(gè)詞就是spider的名字。

      該命令的最后一部分告訴Scrapy我們想要抓取哪個(gè)網(wǎng)站。框架將使用它來(lái)填充一些新spider的參數(shù)。

      定義Items

      在Scrapy中,Items是組織我們spider爬行特定網(wǎng)站時(shí)收集東西的方式/模型。雖然我們可以很容易地完成我們的目標(biāo)- 獲取特定網(wǎng)站上所有頁(yè)面的列表- 不使用Items,但如果我們想稍后擴(kuò)展我們的爬蟲,則不使用Items可能會(huì)限制我們。

      要定義一個(gè)Item,只需打開我們生成項(xiàng)目時(shí)創(chuàng)建的Scrapy的items.py文件。在其中,將有一個(gè)名為BidItem的類。類名基于我們?yōu)轫?xiàng)目提供的名稱。

      class?BidItem(scrapy.Item): ?#?define?the?fields?for?your?item?here?like: ?#?name?=?scrapy.Field() ?pass

      將pass替換為名為url的新字段的定義。

      url?=?scrapy.Field()

      保存做好的文檔

      構(gòu)建Web Spider

      接下來(lái)打開項(xiàng)目中的蜘蛛目錄,查找生成的新Spider Scrapy。 在這個(gè)例子中,這個(gè)蜘蛛叫做getbid,所以文件是getbid.py。

      在編輯器中打開此文件時(shí),您應(yīng)該看到如下所示的內(nèi)容。

      #?-*-?coding:?utf-8?-*- import?scrapy from?scrapy.linkextractors?import?LinkExtractor from?scrapy.spiders?import?CrawlSpider,?Rule from?bid.items?import?BidItem class?GetbidSpider(CrawlSpider): ?name?=?'getbid' ?allowed_domains?=?['businessideadaily.com'] ?start_urls?=?['http://www.businessideadaily.com/'] rules?=?( ?Rule(LinkExtractor(allow=r'Items/'),?callback='parse_item',?follow=True), ?) def?parse_item(self,?response): ?i?=?BidItem() ?#i['domain_id']?=?response.xpath('//input[@id="sid"]/@value').extract() ?#i['name']?=?response.xpath('//div[@id="name"]').extract() ?#i['description']?=?response.xpath('//div[@id="description"]').extract() ?return?i

      我們需要對(duì)為我們生成的代碼Scrapy進(jìn)行一些小的更改。 首先,我們需要在規(guī)則下修改LinkExtractor的參數(shù)。刪除括號(hào)中的所有內(nèi)容。

      Rule(LinkExtractor(), callback='parse_item', follow=True),

      通過此更新,我們的spider將在起始頁(yè)面(主頁(yè))上找到每個(gè)鏈接,將單個(gè)鏈接傳遞給parse_item方法,并按照指向網(wǎng)站下一頁(yè)的鏈接來(lái)確保我們獲取每個(gè)鏈接頁(yè)面。

      接下來(lái),我們需要更新parse_item方法。 刪除所有注釋行。這些線條只是Scrapy為我們提供的例子。

      def?parse_item(self,?response): ?i?=?BidItem() ?return?i

      我喜歡使用有意義的變量名。 所以我要將i更改為href,這是HTML鏈接中屬性的名稱,如果有的話,它將保存目標(biāo)鏈接的地址。

      def parse_item(self, response):

      href = BidItem()

      return href

      現(xiàn)在奇跡發(fā)生了,我們捕獲頁(yè)面URL為Items。

      def?parse_item(self,?response): ?href?=?BidItem() ?href['url']?=?response.url ?return?href

      這就對(duì)了。 新Spider已經(jīng)準(zhǔn)備好爬行了。

      抓取網(wǎng)站,獲取數(shù)據(jù)

      從命令行,我們想要導(dǎo)航到我們的項(xiàng)目目錄。 進(jìn)入該目錄后,我們將運(yùn)行一個(gè)簡(jiǎn)單的命令來(lái)發(fā)送我們的新蜘蛛并獲取一個(gè)頁(yè)面列表。

      scrapy crawl getbid -o 012916.csv

      該命令有幾個(gè)部分。 首先,我們參考Scrapy框架。 我們告訴Scrapy我們想爬行。 我們指定要使用getbid蜘蛛。

      -o告訴Scrapy輸出結(jié)果。 該命令的012916.csv部分告訴Scrapy將結(jié)果放在帶有該名稱的逗號(hào)分隔值(.csv)文件中。

      在示例中,Scrapy將返回三個(gè)頁(yè)面地址。 我為這個(gè)例子選擇這個(gè)網(wǎng)站的原因之一是它只有幾頁(yè)。 如果你在一個(gè)有數(shù)千頁(yè)的網(wǎng)站上瞄準(zhǔn)一個(gè)類似的蜘蛛,它將需要一些時(shí)間來(lái)運(yùn)行,但它會(huì)返回一個(gè)類似的響應(yīng)。

      url

      https://businessideadaily.com/auth/login

      https://businessideadaily.com/

      https://businessideadaily.com/password/email

      只需幾行代碼,您就可以為自己的站點(diǎn)監(jiān)控應(yīng)用程序奠定基礎(chǔ)。

      本文由數(shù)據(jù)星河原創(chuàng)

      Jupyter notebook python

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:處理日期相關(guān)的問題時(shí)如何提取出生日期的年、月、日(怎么提取日期中的年月)
      下一篇:PPT轉(zhuǎn)Word4個(gè)實(shí)例,含怎么把大綱不顯示文字的PPT轉(zhuǎn)換Word和如何保留原格式將PPT轉(zhuǎn)換成Word
      相關(guān)文章
      亚洲日本在线播放| 亚洲欧洲日产国码久在线观看| 337p日本欧洲亚洲大胆艺术| 亚洲AV日韩AV鸥美在线观看| 亚洲国产精品自产在线播放| 另类专区另类专区亚洲| 狠狠入ady亚洲精品| 春暖花开亚洲性无区一区二区| 亚洲GV天堂GV无码男同| 亚洲AV无码AV日韩AV网站| 亚洲成a人无码亚洲成av无码 | 亚洲精品卡2卡3卡4卡5卡区| 中文字幕精品亚洲无线码二区| 亚洲综合无码精品一区二区三区| 超清首页国产亚洲丝袜| 亚洲中文字幕第一页在线| 中文字幕亚洲综合久久菠萝蜜| 亚洲线精品一区二区三区影音先锋| 亚洲一区二区三区在线观看精品中文| 亚洲日本在线观看视频| 国产亚洲人成A在线V网站| 亚洲日韩av无码| 无码乱人伦一区二区亚洲一| 色婷婷亚洲十月十月色天| 亚洲香蕉网久久综合影视| 亚洲天堂中文字幕在线| 亚洲国产成人久久一区久久| 亚洲精品成人片在线观看| 亚洲AV综合色区无码另类小说 | 亚洲人成小说网站色| 亚洲另类无码专区丝袜| 一区二区亚洲精品精华液| 亚洲gv猛男gv无码男同短文| 亚洲自偷自拍另类12p| 亚洲国产成人精品无码一区二区| 亚洲娇小性xxxx色| 亚洲av无码国产精品色在线看不卡 | 亚洲国产精品一区第二页| 亚洲黄色在线电影| 亚洲不卡影院午夜在线观看| 亚洲av日韩综合一区二区三区 |