国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Scrapy基本用法

URLOS / 933人閱讀

安裝scrapy

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

創建一個項目

在命令行輸入

scrapy startproject tutorial

進入項目目錄創建一個spider

cd tutorial
scrapy genspider quotes domain.com
import scrapy

class 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" % page
        with 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

示例代碼


 
  
  Example website
 
 
  
 
# 獲取標題
# selector可以去掉
# extract返回的是列表
response.selector.xpath("http://title/text()").extract_first()
response.selector.css("title::text").extract_first()

# 獲取a標簽里href參數內容
response.xpath("http://a/@href").extract()
response.css("a::attr(href)").extract()

# 混合獲取img標簽的src屬性
response.xpath("http://div[@id="images"]").css("img::attr(src)").extract()

# 獲取a標簽中包含image的href屬性
response.xpath("http://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進行加工處理,主要是數據清洗,格式化。

# 過濾掉相同的item

class 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,
}

數字越小,優先級越高

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/43235.html

相關文章

  • 零基礎如何學爬蟲技術

    摘要:楚江數據是專業的互聯網數據技術服務,現整理出零基礎如何學爬蟲技術以供學習,。本文來源知乎作者路人甲鏈接楚江數據提供網站數據采集和爬蟲軟件定制開發服務,服務范圍涵蓋社交網絡電子商務分類信息學術研究等。 楚江數據是專業的互聯網數據技術服務,現整理出零基礎如何學爬蟲技術以供學習,http://www.chujiangdata.com。 第一:Python爬蟲學習系列教程(來源于某博主:htt...

    KunMinX 評論0 收藏0
  • 非計算機專業小白自學爬蟲全指南(附資源)

    摘要:爬蟲是我接觸計算機編程的入門。練練練本文推薦的資源就是以項目練習帶動爬蟲學習,囊括了大部分爬蟲工程師要求的知識點。拓展閱讀一文了解爬蟲與反爬蟲最后,請注意,爬蟲的工作機會相對較少。 爬蟲是我接觸計算機編程的入門。哥當年寫第一行代碼的時候別提有多痛苦。 本文旨在用一篇文章說透爬蟲如何自學可以達到找工作的要求。 爬蟲的學習就是跟著實際項目去學,每個項目會涉及到不同的知識點,項目做多了,自然...

    CarlBenjamin 評論0 收藏0
  • Python 爬蟲面試題 170 道:2019 版

    摘要:下面代碼會存在什么問題,如何改進一行代碼輸出之間的所有偶數。簡述進程之間如何通信多路復用的作用模型的區別什么是并發和并行解釋什么是異步非阻塞的作用面試題說說你知道的命令如何查看某次提交修改的內容答案掃碼下面的二維碼訂閱即可獲取。 引言 最近在刷面試題,所以需要看大量的 Python 相關的面試題,從大量的題目中總結了很多的知識,同時也對一些題目進行拓展了,但是在看了網上的大部分面試題不...

    trigkit4 評論0 收藏0
  • scrapy學習筆記

    摘要:是最有名的爬蟲框架之一,可以很方便的進行抓取,并且提供了很強的定制型,這里記錄簡單學習的過程和在實際應用中會遇到的一些常見問題一安裝在安裝之前有一些依賴需要安裝,否則可能會安裝失敗,的選擇器依賴于,還有網絡引擎,下面是下安裝的過程下安裝安裝 scrapy是python最有名的爬蟲框架之一,可以很方便的進行web抓取,并且提供了很強的定制型,這里記錄簡單學習的過程和在實際應用中會遇到的一...

    luzhuqun 評論0 收藏0

發表評論

0條評論

URLOS

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<