中文字幕理论片,69视频免费在线观看,亚洲成人app,国产1级毛片,刘涛最大尺度戏视频,欧美亚洲美女视频,2021韩国美女仙女屋vip视频

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
Scrapy之路第一篇

構(gòu)建自己的數(shù)據(jù)王國

  • 新建項(xiàng)目
  • 明確目標(biāo)
  • 制作爬蟲
  • 保存數(shù)據(jù)

一、新建項(xiàng)目(scrapy startproject)

  • 在爬取前,必須創(chuàng)建一個(gè)新的scrapy項(xiàng)目,進(jìn)入自定義的項(xiàng)目目錄中,運(yùn)行下列命令:
scrapy startproject myspider
  • 1
  • 其中,myspider為項(xiàng)目名稱,可以看到將會創(chuàng)建一個(gè)myspider文件夾,目錄結(jié)構(gòu)大致如下:

這些文件的主要作用列舉如下:

  1. scrapy.cfg:項(xiàng)目的配置文件
  2. myspider/:項(xiàng)目的python模塊,將會從這里引用代碼
  3. myspider/items.py:項(xiàng)目的目標(biāo)文件
  4. myspider/pipelines.py:項(xiàng)目的管道文件
  5. myspider/settings.py:項(xiàng)目的設(shè)置文件
  6. myspider/spiders/:存儲爬蟲代碼目錄

二、 明確目標(biāo)(myspider/items.py)

準(zhǔn)備抓取網(wǎng)站http://www.itcast.cn/channel/teacher.shtml網(wǎng)站里的所有講師的姓名、職稱和個(gè)人信息。

  1. Item用來定義結(jié)構(gòu)化數(shù)據(jù)字段,用以保存爬取到的數(shù)據(jù),有點(diǎn)像python中的dict,但是提供了一些額外的保護(hù)減少錯(cuò)誤。
  2. 可以在myspider/items.py中創(chuàng)建一個(gè)Item類,并且通過在Item類中繼續(xù)定義多個(gè)Field類(該類是繼承了dict)來完善該Item類
  3. 接下來,創(chuàng)建一個(gè)ItcastItem類,和構(gòu)建item模型(model)。
import scrapyclass ItcastItem(scrapy.Item):    name = scrapy.Field()    level = scrapy.Field()    info = scrapy.Field()
  • 1
  • 2
  • 3
  • 4
  • 5

三、 制作爬蟲(spiders/itcastspider.py)

爬蟲功能要分兩步:
1、爬數(shù)據(jù)

  • 在當(dāng)前目錄下輸入命令,將在myspider/spiders目錄下創(chuàng)建一個(gè)名為itcast的爬蟲,并指定爬取域的范圍:
scrapy genspider itcast "itcast.cn"
  • 1
  • 打開myspider/spiders目錄里的itcast.py,默認(rèn)增加了下列代碼:
import scrapyclass ItcastSpider(scrapy.Spider):    name = 'itcast'    allowed_domains = ['itcast.cn']    start_urls = ['http://www.itcast.cn/channel/teacher.shtml']    def parse(self, response):        pass
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

其實(shí)也可以由我們自行創(chuàng)建itcast.py并編寫上面的代碼,只不過使用命令可以免去編寫固定代碼的麻煩。

要建立一個(gè)spider,你必須用scrapy.spider類創(chuàng)建一個(gè)子類,并確定了三個(gè)強(qiáng)制的屬性和一個(gè)方法。

  • name = ‘itcast’:這個(gè)爬蟲的識別名稱,必須是唯一的,在不同的爬蟲必須定義不同的名字
  • allow_domains=[]:是搜索的域名范圍,也就是爬蟲的約束區(qū)域,規(guī)定爬蟲只爬取這個(gè)域名下的網(wǎng)頁,不存在的URL會被忽略
  • start_urls=[]:爬取的URL元祖/列表,爬蟲從這里開始抓取數(shù)據(jù),所以,第一次下載的數(shù)據(jù)將會從這些urls開始,其他子URL將會從這些起始URL中繼承性生成。
  • parse(self,response):解析的方法,每個(gè)初識URL完成下載后將被調(diào)用,調(diào)用的時(shí)候傳入從每一個(gè)URL傳回的Response對象來作為唯一參數(shù)主要作用如下:
    • 負(fù)責(zé)解析返回的網(wǎng)頁數(shù)據(jù)(reponse.body),提取結(jié)構(gòu)化數(shù)據(jù)(生成item)
    • 生成需要下一頁的URL請求
  • 將start_urls的值修改為需要爬取的第一個(gè)url
start_urls=['http://www.itcast.cn/channel/teacher.shtml']
  • 1
  • 修改parse()方法
def parse(self, response):    filename="teacher.html"    with open(filename,'wb') as f:        f.write(response.body)
  • 1
  • 2
  • 3
  • 4
  • 然后在myspider/myspider目錄下執(zhí)行
scrapy crawl itcast
  • 1
  • 運(yùn)行后,打印的日志出現(xiàn)[scrapy.core.engine] INFO: Spider closed (finished),代表執(zhí)行完成。

2、取數(shù)據(jù)

  • 爬取整個(gè)網(wǎng)頁源碼完畢,接下來是提取過程,首先觀察頁面源碼:
<div class="li_txt">    <h3> xxx </h3>    <h4> xxxxx </h4>    <p> xxxxxxx </p>
  • 1
  • 2
  • 3
  • 4
  • 之前在myspider/items.py里定義了一個(gè)MyspiderItem類,這里引入進(jìn)來
from myspider.items import MyspiderItem
  • 1
  • 然后將我們得到的數(shù)據(jù)封裝到一個(gè)MyspiderItem對象中,可以保存每個(gè)老師的屬性:
def parse(self, response):     # filename="teacher.html"     # with open(filename,'wb') as f:     #     f.write(response.body)     items=[]     for each in response.xpath("http://div[@class='li_txt']"):         item=MyspiderItem()         name=each.xpath("h3/text()").extract()[0]         level=each.xpath("h4/text()").extract()[0]         info=each.xpath("p/text()").extract()[0]         item['name']=name         item['level']=level         item['info']=info         items.append(item)     return items
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

四、 保存數(shù)據(jù)

我們暫時(shí)先不處理管道。
scrapy保存信息的最簡單的方法主要有四中,-o輸出指定格式的文件,命令如下:

#json格式,默認(rèn)為unicode編碼scrapy crawl itcast -o teachers.jsonscrapy crawl itcast -o teachers.jsonlscrapy crawl itcast -o teachers.csvscrapy crawl itcast -o teachers.xml
  • 1
  • 2
  • 3
  • 4
  • 5
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Python抓取框架Scrapy入門教程
Scrapy快速入門
從原理到實(shí)戰(zhàn),一份詳實(shí)的 Scrapy 爬蟲教程,值得收藏
scrapy終端常用命令
Python爬蟲入門【17】:高考派大學(xué)數(shù)據(jù)抓取 scrapy
使用Python的Scrapy框架編寫web爬蟲的簡單示例
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服