日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Python爬蟲Scrapy框架CrawlSpider原理及使用案例

瀏覽:31日期:2022-07-04 17:30:09

提問:如果想要通過爬蟲程序去爬取”糗百“全站數據新聞數據的話,有幾種實現方法?

方法一:基于Scrapy框架中的Spider的遞歸爬去進行實現的(Request模塊回調)

方法二:基于CrawlSpider的自動爬去進行實現(更加簡潔和高效)

一、簡單介紹CrawlSpider

CrawlSpider其實是Spider的一個子類,除了繼承到Spider的特性和功能外,還派生除了其自己獨有的更加強大的特性和功能。其中最顯著的功能就是”LinkExtractors鏈接提取器“。Spider是所有爬蟲的基類,其設計原則只是為了爬取start_url列表中網頁,而從爬取到的網頁中提取出的url進行繼續的爬取工作使用CrawlSpider更合適。

二、使用

1.創建scrapy工程(cmd切換到要創建項目的文件夾下執行):scrapy startproject projectName (如:scrapy startproject crawlPro)

2.創建爬蟲文件(cmd切換到創建的項目下執行):scrapy genspider -t crawl spiderName www.xxx.com (如:scrapy genspider -t crawl crawlDemo www.qiushibaike.com)

--此指令對比以前的指令多了 '-t crawl',表示創建的爬蟲文件是基于CrawlSpider這個類的,而不再是Spider這個基類。

3.啟動爬蟲文件(cmd基于步驟二的路徑執行):scrapy crawl crawlDemo (啟動的一定是name對應的值,如果爬蟲文件與name的值不一致,任然以name的值進行啟動)

觀察生成的爬蟲文件

crawlDemo.py

# -*- coding: utf-8 -*-import scrapy# 導入CrawlSpider相關模塊from scrapy.linkextractors import LinkExtractorfrom scrapy.spiders import CrawlSpider, Rule# 表示該爬蟲程序是基于CrawlSpider類的class CrawldemoSpider(CrawlSpider): name = ’crawlDemo’ #爬蟲文件名稱 #allowed_domains = [’www.qiushibaike.com’] start_urls = [’http://www.qiushibaike.com/’] #連接提取器:會去起始url響應回來的頁面中提取指定的url link = LinkExtractor(allow=r’/8hr/page/d+’) #rules元組中存放的是不同的規則解析器(封裝好了某種解析規則) rules = ( #規則解析器:可以將連接提取器提取到的所有連接表示的頁面進行指定規則(回調函數)的解析 Rule(link, callback=’parse_item’, follow=True), ) # 解析方法 def parse_item(self, response): #print(response.url) divs = response.xpath(’//div[@id='content-left']/div’) for div in divs: author = div.xpath(’./div[@class='author clearfix']/a[2]/h2/text()’).extract_first() print(author)

CrawlSpider類和Spider類的最大不同是CrawlSpider多了一個rules屬性,其作用是定義”提取動作“。在rules中可以包含一個或多個Rule對象,在Rule對象中包含了LinkExtractor對象。 

三、生成的爬蟲文件參數介紹

3.1 LinkExtractor:顧名思義,鏈接提取器。

LinkExtractor(

  allow=r’Items/’,# 滿足括號中“正則表達式”的值會被提取,如果為空,則全部匹配。

deny=xxx, # 滿足正則表達式的則不會被提取。

restrict_xpaths=xxx, # 滿足xpath表達式的值會被提取

restrict_css=xxx, # 滿足css表達式的值會被提取

deny_domains=xxx, # 不會被提取的鏈接的domains。 

)

- 作用:提取response中符合規則的鏈接。 

3.2 Rule : 規則解析器。根據鏈接提取器中提取到的鏈接,根據指定規則提取解析器鏈接網頁中的內容。

Rule(LinkExtractor(allow=r’Items/’), callback=’parse_item’, follow=True)

- 參數介紹:

參數1:指定鏈接提取器

參數2:指定規則解析器解析數據的規則(回調函數)

參數3:是否將鏈接提取器繼續作用到鏈接提取器提取出的鏈接網頁中。當callback為None,參數3的默認值為true。

3.3 rules=( ):指定不同規則解析器。一個Rule對象表示一種提取規則。

3.4 CrawlSpider整體爬取流程:

a)爬蟲文件首先根據起始url,獲取該url的網頁內容

b)鏈接提取器會根據指定提取規則將步驟a中網頁內容中的鏈接進行提取

c)規則解析器會根據指定解析規則將鏈接提取器中提取到的鏈接中的網頁內容根據指定的規則進行解析

d)將解析數據封裝到item中,然后提交給管道進行持久化存儲

四、基于CrawlSpider示例

創建爬蟲項目和啟動爬蟲項目以及settings中配置自行完成,在這里不在追贅述

4.1爬蟲文件

# -*- coding: utf-8 -*-import scrapyfrom scrapy.linkextractors import LinkExtractorfrom scrapy.spiders import CrawlSpider, Rulefrom qiubaiBycrawl.items import QiubaibycrawlItemimport reclass QiubaitestSpider(CrawlSpider): name = ’qiubaiTest’ #起始url start_urls = [’http://www.qiushibaike.com/’] #定義鏈接提取器,且指定其提取規則 page_link = LinkExtractor(allow=r’/8hr/page/d+/’) rules = ( #定義規則解析器,且指定解析規則通過callback回調函數 Rule(page_link, callback=’parse_item’, follow=True), ) #自定義規則解析器的解析規則函數 def parse_item(self, response): div_list = response.xpath(’//div[@id='content-left']/div’)for div in div_list: #定義item item = QiubaibycrawlItem() #根據xpath表達式提取糗百中段子的作者 item[’author’] = div.xpath(’./div/a[2]/h2/text()’).extract_first().strip(’n’) #根據xpath表達式提取糗百中段子的內容 item[’content’] = div.xpath(’.//div[@class='content']/span/text()’).extract_first().strip(’n’) yield item #將item提交至管道

4.2items文件

# -*- coding: utf-8 -*-# Define here the models for your scraped items## See documentation in:# https://doc.scrapy.org/en/latest/topics/items.htmlimport scrapyclass QiubaibycrawlItem(scrapy.Item): # define the fields for your item here like: # name = scrapy.Field() author = scrapy.Field() #作者 content = scrapy.Field() #內容

4.3管道文件

# -*- 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.htmlclass QiubaibycrawlPipeline(object): def __init__(self): self.fp = None def open_spider(self,spider): print(’開始爬蟲’) self.fp = open(’./data.txt’,’w’) def process_item(self, item, spider): #將爬蟲文件提交的item寫入文件進行持久化存儲 self.fp.write(item[’author’]+’:’+item[’content’]+’n’) return item def close_spider(self,spider): print(’結束爬蟲’) self.fp.close()

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Python 編程
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲在线一区| 国产视频一区三区| 日韩精品国产精品| 亚洲少妇自拍| 亚洲一区激情| 亚洲精品人人| 亚洲午夜免费| 日韩精品一区二区三区中文在线| 亚洲欧洲av| 日韩精品一区第一页| 久热re这里精品视频在线6| 亚洲在线电影| 亚洲ww精品| 日本午夜精品久久久久| 91精品视频一区二区| 国产精品99久久免费| 精品高清久久| 秋霞国产精品| 亚洲免费观看| 亚洲三级av| 国产调教精品| 久久一区国产| 啪啪国产精品| 免费在线观看不卡| 日本一区二区三区中文字幕| 国产日产精品_国产精品毛片| 欧美国产日本| 免费污视频在线一区| 日韩视频一区| 日本aⅴ亚洲精品中文乱码| 麻豆视频久久| 久久国产影院| 7777精品| 亚洲成人一区在线观看| 先锋亚洲精品| 国产精品欧美三级在线观看| 黄色aa久久| 午夜在线观看免费一区| 国产欧美日韩精品高清二区综合区 | 欧美成人国产| 老牛影视一区二区三区| 国产精品一级| 欧美影院三区| 91亚洲精品在看在线观看高清| 97视频热人人精品免费| 日韩一区二区久久| 国产精品资源| 九九精品调教| 日本aⅴ精品一区二区三区| 最新中文字幕在线播放| 久久天堂精品| 天堂va欧美ⅴa亚洲va一国产| 精品精品久久| 国产日韩综合| 麻豆91小视频| 亚洲综合二区| 成人日韩av| 亚洲无线观看| 天堂а√在线最新版中文在线| 亚洲一二三区视频| а√在线中文在线新版| 免费在线欧美视频| 理论片午夜视频在线观看| 免费人成在线不卡| 久久男人天堂| 亚洲视频电影在线| 日韩一区电影| 国产午夜精品一区在线观看| 久久中文字幕av| 麻豆成人在线观看| 亚洲a成人v| 99久久亚洲精品蜜臀| 欧美日本精品| 国产婷婷精品| 国产精品专区免费| 欧美亚洲网站| 99国产精品99久久久久久粉嫩| 国产a亚洲精品| 日本高清久久| 在线综合欧美| 精品久久视频| 国产日产精品_国产精品毛片| av不卡免费看| 日韩伦理福利| 国产精品欧美三级在线观看| 亚洲自啪免费| 日韩在线欧美| 麻豆精品久久| 欧美视频一区| 一区二区三区四区日韩| 久久亚洲专区| 岛国av免费在线观看| 欧美亚洲tv| 亚洲日本国产| 性色一区二区| av亚洲一区二区三区| 精品视频亚洲| 国产精品亚洲一区二区在线观看| 中文视频一区| 欧洲激情综合| 欧美不卡高清一区二区三区| 久久亚州av| 国产精品日本一区二区不卡视频| 亚洲另类视频| 视频一区在线视频| 欧美日韩国产高清电影| 亚洲成人一区在线观看| 国产一区一一区高清不卡| 国产乱论精品| 欧美日本久久| 亚洲精品成a人ⅴ香蕉片| 羞羞答答国产精品www一本| 久久亚洲精品中文字幕蜜潮电影| 国产伦久视频在线观看| 美日韩一区二区三区| 国产乱子精品一区二区在线观看 | 中文无码久久精品| 免费在线观看一区二区三区| 99综合视频| 中文久久精品| 欧美午夜不卡影院在线观看完整版免费| 久久精品在线| 激情综合在线| 日韩欧美一区二区三区在线观看 | 欧美69视频| 亚洲电影在线一区二区三区| 日本久久一区| 国产精品成人一区二区网站软件| 91精品丝袜国产高跟在线| 亚洲精品乱码久久久久久蜜桃麻豆| 羞羞答答国产精品www一本 | 久久国产婷婷国产香蕉| 日韩av一二三| 欧美一级全黄| 久久不见久久见中文字幕免费| 国产精品久久久久久模特| 美女视频黄久久| 日本精品黄色| 香蕉成人av| 欧美一级精品| 蜜桃久久av| 亚洲69av| 国产精品亚洲欧美| 久久精品欧洲| 日韩大片免费观看| 欧美日韩亚洲在线观看| 久久精品国产亚洲夜色av网站| 欧美精品九九| 日本在线成人| 精品免费在线| 99久久精品网| 另类av一区二区| 日韩高清一区二区| 欧美精品二区| 免费在线小视频| 欧美专区在线| 日韩精品一级| 国产一区丝袜| 九九久久电影| 亚洲精品看片| 精品三级在线观看视频| 日韩欧美自拍| 午夜在线视频一区二区区别| 欧美伊人影院| 日韩高清中文字幕一区二区| 亚洲美洲欧洲综合国产一区| 亚洲ww精品| 精品一区二区三区在线观看视频| 日韩精品一区二区三区免费观看| 视频一区二区不卡| 国产精品一区二区三区www| 成人啊v在线| 亚洲伊人精品酒店| 麻豆精品久久久| 亚洲天堂成人| 欧美天堂一区二区| 精品国产第一福利网站| 亚洲欧洲另类| 国产极品久久久久久久久波多结野| 国产一区二区三区视频在线| 激情五月综合网| 日本不卡在线视频| 亚洲欧洲高清| 亚洲免费毛片| 日韩专区精品| 日韩久久99| 三级精品视频| 国产欧美激情| 国产韩日影视精品| 国产欧美日韩综合一区在线播放| 婷婷精品视频| 69堂精品视频在线播放| 欧美三级精品| 日本a级不卡| 久久久国产精品一区二区中文| 日韩欧美中文字幕在线视频| 国产麻豆久久| 国产精品www.| 国产精品女主播一区二区三区| 久久69成人|