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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

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

上個博客寫了:? Scrapy的概念以及Scrapy的詳細工作流程?https://blog.csdn.net/wei18791957243/article/details/86154068

1.scrapy的安裝? pip install scrapy

?2.創建Scarpy項目:

? ?在cmd中進入到想要創建Scrapy項目的路徑下(最好在已經創建好的pycharm的工程路徑下,就不用導入Python編譯器等):? ? 輸入命令創建:scrapy startproject scrapy的項目名稱

??

?創建之后,可以在pycharm中查看已經創建了什么,一個

??

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

?middlewares.py? : 中間鍵

?pipelines.py:? 管道? , 進行數據的處理以及保存

?settings.py? :? 整個項目的設置

spiders文件夾;? 創建好的爬蟲,創建好是空的

3.生成一個爬蟲? ?

? ?首先cd 創建的scrapy的項目名

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

??

然后進入到pycharm中查看生成的東西:

?? ? ? ? ?

4.然后就可以寫爬蟲了,? 這是一個專門測試scrapy的爬蟲網站 :http://quotes.toscrape.com/? 里面是一些名言名句

? ?在剛才創建好的爬蟲名字的py文件里面寫。

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

? 然后打印出這個名言,?

? ?

5.? 啟動爬蟲的框架:

首先cmd中進入到你剛才創建的項目路徑下。

?輸入命令:?scrapy crawl 爬蟲名

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

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

LOG_LEVEL = "WARNING"

然后在執行命令就可以了? :?scrapy crawl 爬蟲名

?可以看到爬取的數據都在一個列表當中,列表當中的每個元素是一個Selector對象,

(3). 直接取出當中的數據? extract()方法,可以在代碼中這樣寫

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

然后在執行啟動框架,運行命令,可以看到數據就取出來了?

? 有關取值:

?

?當使用extrat_first()的時候,如果xpath寫錯的話,取值的會是一個空值,None

6. pipelines管道的使用,? ?

? 首先要在pipelines里面開啟? ,在settings.py里面把這個注釋去掉就行

? ?

是一個字典, 鍵代表位置,值代表距離引擎的遠近,即權重

?對值的解釋:? 我們可以定義多個pipeline,數據會先進行一個pipeline再進行一個pipeline,進入的pipeline的先后順序就可以通過值來指定。值越小會先執行

? 爬蟲名字.py:

# -*- coding: utf-8 -*- import scrapyclass ScrapetestSpider(scrapy.Spider):name = 'scrapeTest' # 爬蟲名'''允許爬取的范圍'''allowed_domains = ['quotes.toscrape.com']'''最開始請求的url地址'''start_urls = ['http://quotes.toscrape.com/']def parse(self, response):"""處理start_url地址對應的響應"""# 爬取頁面上的名言text = response.xpath("//span[@class='text']//text()").extract()# 爬取頁面上的作者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("保存數據成功")

然后開啟框架,查看保存的數據text.txt

總結

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

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