日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

Scrapy框架的学习(2.scrapy入门,简单爬取页面,并使用管道(pipelines)保存数据)

發(fā)布時(shí)間:2024/9/30 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Scrapy框架的学习(2.scrapy入门,简单爬取页面,并使用管道(pipelines)保存数据) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

上個(gè)博客寫(xiě)了:? Scrapy的概念以及Scrapy的詳細(xì)工作流程?https://blog.csdn.net/wei18791957243/article/details/86154068

1.scrapy的安裝? pip install scrapy

?2.創(chuàng)建Scarpy項(xiàng)目:

? ?在cmd中進(jìn)入到想要?jiǎng)?chuàng)建Scrapy項(xiàng)目的路徑下(最好在已經(jīng)創(chuàng)建好的pycharm的工程路徑下,就不用導(dǎo)入Python編譯器等):? ? 輸入命令創(chuàng)建:scrapy startproject scrapy的項(xiàng)目名稱(chēng)

??

?創(chuàng)建之后,可以在pycharm中查看已經(jīng)創(chuàng)建了什么,一個(gè)

??

?items.py? 可以預(yù)先定義好爬取那些字段

?middlewares.py? : 中間鍵

?pipelines.py:? 管道? , 進(jìn)行數(shù)據(jù)的處理以及保存

?settings.py? :? 整個(gè)項(xiàng)目的設(shè)置

spiders文件夾;? 創(chuàng)建好的爬蟲(chóng),創(chuàng)建好是空的

3.生成一個(gè)爬蟲(chóng)? ?

? ?首先cd 創(chuàng)建的scrapy的項(xiàng)目名

? ?然后??scrapy? genspider? ?爬蟲(chóng)名? ?域名(即爬取的范圍)

??

然后進(jìn)入到pycharm中查看生成的東西:

?? ? ? ? ?

4.然后就可以寫(xiě)爬蟲(chóng)了,? 這是一個(gè)專(zhuān)門(mén)測(cè)試scrapy的爬蟲(chóng)網(wǎng)站 :http://quotes.toscrape.com/? 里面是一些名言名句

? ?在剛才創(chuàng)建好的爬蟲(chóng)名字的py文件里面寫(xiě)。

# -*- coding: utf-8 -*- import scrapyclass ScrapetestSpider(scrapy.Spider):name = 'scrapeTest' # 爬蟲(chóng)名'''允許爬取的范圍'''allowed_domains = ['quotes.toscrape.com']'''最開(kāi)始請(qǐng)求的url地址'''start_urls = ['http://quotes.toscrape.com/']def parse(self, response):"""處理start_url地址對(duì)應(yīng)的響應(yīng)"""# 爬取頁(yè)面上的名言ret1 = response.xpath("//span[@class='text']//text()")print(ret1)

? 然后打印出這個(gè)名言,?

? ?

5.? 啟動(dòng)爬蟲(chóng)的框架:

首先cmd中進(jìn)入到你剛才創(chuàng)建的項(xiàng)目路徑下。

?輸入命令:?scrapy crawl 爬蟲(chóng)名

(1)會(huì)打印出很多的東西,包括日志等等,

(2)看著有點(diǎn)亂,我們可以在settings.py加入下面設(shè)置

LOG_LEVEL = "WARNING"

然后在執(zhí)行命令就可以了? :?scrapy crawl 爬蟲(chóng)名

?可以看到爬取的數(shù)據(jù)都在一個(gè)列表當(dāng)中,列表當(dāng)中的每個(gè)元素是一個(gè)Selector對(duì)象,

(3). 直接取出當(dāng)中的數(shù)據(jù)? extract()方法,可以在代碼中這樣寫(xiě)

ret1 = response.xpath("//span[@class='text']//text()").extract()

然后在執(zhí)行啟動(dòng)框架,運(yùn)行命令,可以看到數(shù)據(jù)就取出來(lái)了?

? 有關(guān)取值:

?

?當(dāng)使用extrat_first()的時(shí)候,如果xpath寫(xiě)錯(cuò)的話,取值的會(huì)是一個(gè)空值,None

6. pipelines管道的使用,? ?

? 首先要在pipelines里面開(kāi)啟? ,在settings.py里面把這個(gè)注釋去掉就行

? ?

是一個(gè)字典, 鍵代表位置,值代表距離引擎的遠(yuǎn)近,即權(quán)重

?對(duì)值的解釋:? 我們可以定義多個(gè)pipeline,數(shù)據(jù)會(huì)先進(jìn)行一個(gè)pipeline再進(jìn)行一個(gè)pipeline,進(jìn)入的pipeline的先后順序就可以通過(guò)值來(lái)指定。值越小會(huì)先執(zhí)行

? 爬蟲(chóng)名字.py:

# -*- coding: utf-8 -*- import scrapyclass ScrapetestSpider(scrapy.Spider):name = 'scrapeTest' # 爬蟲(chóng)名'''允許爬取的范圍'''allowed_domains = ['quotes.toscrape.com']'''最開(kāi)始請(qǐng)求的url地址'''start_urls = ['http://quotes.toscrape.com/']def parse(self, response):"""處理start_url地址對(duì)應(yīng)的響應(yīng)"""# 爬取頁(yè)面上的名言text = response.xpath("//span[@class='text']//text()").extract()# 爬取頁(yè)面上的作者aut = response.xpath("//small[@class='author']//text()").extract()for li in range(len(text)):item = {}item["author"] = aut[li]item["text"] = text[li]yield item

?

pipelines.py: # -*- coding: utf-8 -*-# Define your item pipelines here # # Don't forget to add your pipeline to the ITEM_PIPELINES setting # See: https://doc.scrapy.org/en/latest/topics/item-pipeline.htmlimport json class MyspiderPipeline(object):def process_item(self, item, spider):with open("text.txt",'a') as f:f.write(json.dumps(item,ensure_ascii=False)+"\n")return itemprint("保存數(shù)據(jù)成功")

然后開(kāi)啟框架,查看保存的數(shù)據(jù)text.txt

總結(jié)

以上是生活随笔為你收集整理的Scrapy框架的学习(2.scrapy入门,简单爬取页面,并使用管道(pipelines)保存数据)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。