scrapy框架学习(三)Spiders
生活随笔
收集整理的這篇文章主要介紹了
scrapy框架学习(三)Spiders
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Spider類定義了如何爬取某個(或某些)網站。包括了爬取的動作(例如:是否跟進鏈接)以及如何從網頁的內容中提取結構化數據(爬取item)。 也就是說我們對網頁的解析需要在Spider類中定義。
Spider類的爬取方式:
①spider中初始的request是通過調用 start_requests() 來獲取的。 start_requests() 讀取 start_urls 中的URL, 并以 parse 為回調函數生成 Request。
②在回調函數內分析返回的(網頁)內容,返回 Item 對象或者 Request 或者一個包括二者的可迭代容器。 返回的Request對象之后會經過Scrapy處理,下載相應的內容,并調用設置的callback函數(函數可相同)。
接下來要完成的是對貓眼電影TOP100的電影進行翻頁提取電影名+相對地址
1.更改one_spider.py文件
class SamSpider(scrapy.Spider):name = "sam"start_urls = ["https://maoyan.com/board/4"]url = 'https://maoyan.com/board/4'def parse(self, response):print('>'*50,'獲取數據')for sel in response.xpath('//*[@id="app"]/div/div/div/dl/dd'):item = SamzhuItem()item['name'] = sel.xpath('div/div/div[1]/p[1]/a/@title').extract()item['url'] = sel.xpath('div/div/div[1]/p[1]/a/@href').extract()print(item)print('>'*50,'獲取下一頁請求')a=response.css('.list-pager li:last-child a::attr(href)').extract()[0] #選擇到‘下一頁’的按鈕if re.search(r'offset',a,re.M|re.I)!=None:print('換頁成功')yield scrapy.Request(self.url+a, callback=self.parse) #返回一個requset,設置callback函數為parseprint('+'*50)else:print('到達終點')2.運行結果:
可以發現每次獲取完一頁數據后,都會DEBUG輸出一條信息,代表我們發起了一個新的請求,可以看到請求的網址就是我們下一頁的網址,因為我們下一頁的回調函數也是本身,所以便構成了迭代效果。
?
小結:
上面采用了內置的scrapy.Spider,除了這個,還有CrawlSpider。
從這里開始已經可以開始感受到Scrapy的一些魅力了,能夠使自己把更多的時間精力放在具體的爬蟲工作上,而非邏輯搭建。
總結
以上是生活随笔為你收集整理的scrapy框架学习(三)Spiders的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CCF-CSP真题《202209-4—吉
- 下一篇: 济南服务器管理系统方案,物品管理系统和物