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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Scrapy基本用法

發布時間:2025/6/17 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Scrapy基本用法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

安裝scrapy

不同操作系統安裝操作不同,可以直接看官方文檔Install Scrapy

創建一個項目

在命令行輸入

scrapy startproject tutorial

進入項目目錄創建一個spider

cd tutorial scrapy genspider quotes domain.com import scrapyclass QuotesSpider(scrapy.Spider):name = "quotes"def start_requests(self):urls = ['http://quotes.toscrape.com/page/1/','http://quotes.toscrape.com/page/2/',]for url in urls:yield scrapy.Request(url=url, callback=self.parse)def parse(self, response):page = response.url.split("/")[-2]filename = 'quotes-%s.html' % pagewith open(filename, 'wb') as f:f.write(response.body)self.log('Saved file %s' % filename)

運行scrapy,在項目頂級目錄下輸入命令

scrapy crawl quotes

在QuotesSpider這個類里,name指明spider的名稱,在start_requests函數里發出請求,用parse函數處理請求返回的結果,start_requests函數可以替換為start_urls列表,scrapy會自動幫我們發出請求,并默認用parse函數處理,還可以設置一些其它參數,詳見Document

選擇器用法

scrapy內置css選擇器和xpath選擇器,當然你也可以選擇使用其他的解析庫,比如BeautifulSoup,我們簡單用scrapy shell展示一下scrapy內置選擇器的用法,在命令行中輸入

scrapy shell https://docs.scrapy.org/en/latest/_static/selectors-sample1.html

示例代碼

<html><head><base href='http://example.com/' /><title>Example website</title></head><body><div id='images'><a href='image1.html'>Name: My image 1 <br /><img src='image1_thumb.jpg' /></a><a href='image2.html'>Name: My image 2 <br /><img src='image2_thumb.jpg' /></a><a href='image3.html'>Name: My image 3 <br /><img src='image3_thumb.jpg' /></a><a href='image4.html'>Name: My image 4 <br /><img src='image4_thumb.jpg' /></a><a href='image5.html'>Name: My image 5 <br /><img src='image5_thumb.jpg' /></a></div></body> </html> # 獲取標題 # selector可以去掉 # extract返回的是列表 response.selector.xpath('//title/text()').extract_first() response.selector.css('title::text').extract_first()# 獲取a標簽里href參數內容 response.xpath('//a/@href').extract() response.css('a::attr(href)').extract()# 混合獲取img標簽的src屬性 response.xpath('//div[@id="images"]').css('img::attr(src)').extract()# 獲取a標簽中包含image的href屬性 response.xpath('//a[contains(@href, "image")]/@href').extract() response.css('a[href*=image]::attr(href)').extract()# 使用正則表達式 response.css('a::text').re('Name\:(.*)') response.css('a::text').re_first('Name\:(.*)')# 添加default參數指定默認提取信息 response.css('aa').extract_first(default='')

Item Pipeline用法

通過parse處理函數返回的Item可以用Item Pipeline進行加工處理,主要是數據清洗,格式化。

# 過濾掉相同的itemclass DuplicatePipeline(object):def __init__(self):self.items = set()def process_item(self, item, spider):if item['id'] in self.items:raise DropItem('Duplicate item found: %s' % item['id'])else:self.items.add(item['id'])return item

需要在settings里的注冊一下自定義的Pipeline

ITEM_PIPELINES = {'tutorial.pipelines.TutorialPipeline': 300,'tutorial.pipelines.DuplicatePipeline': 200, }

數字越小,優先級越高

總結

以上是生活随笔為你收集整理的Scrapy基本用法的全部內容,希望文章能夠幫你解決所遇到的問題。

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