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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

scrapy框架—spiders

發布時間:2023/12/16 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 scrapy框架—spiders 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

學習目標

  • 創建一個Scrapy項目
  • 定義提取的結構化數據(Item)
  • 編寫爬取網站的 Spider 并提取出結構化數據(Item)
  • 編寫 Item Pipelines 來存儲提取到的Item(即結構化數據)

1. 創建一個爬蟲項目(scrapy startproject)

  • 進入自定義的項目目錄中,創建一個新的Scrapy項目。運行下列命令:
scrapy startproject myspider
  • 其中, myspider 為項目名稱,可以看到將會創建一個 myspider 文件夾,目錄結構大致如下:

2. 明確目標(mySpider/items.py)

我們打算抓取:http://www.itcast.cn/channel/teacher.shtml 網站里的所有講師的姓名、職稱和個人信息。

  • 打開mySpider目錄下的items.py
  • Item 定義結構化數據字段,用來保存爬取到的數據,有點像Python中的dict,但是提供了一些額外的保護減少錯誤。
  • 可以通過創建一個 scrapy.Item 類, 并且定義類型為 scrapy.Field的類屬性來定義一個Item(可以理解成類似于ORM的映射關系)。
  • 接下來,創建一個ItcastItem 類,和構建item模型(model)。
  • import scrapyclass ItcastItem(scrapy.Item):name = scrapy.Field()level = scrapy.Field()info = scrapy.Field()

    3. 創建一個爬蟲

    • 在當前目錄下輸入命令,將在mySpider/spider目錄下創建一個名為itcast的爬蟲,并指定爬取域的范圍:
    scrapy genspider itcast "itcast.cn"
    • spiders文件夾下面會多出 itcast.py

    spiders 爬蟲功能要分兩步

    1. 發送請求 獲取響應

    (scrapy框架自動實現 拿到網頁的原始代碼 response ; parse方法才是提取數據 需要手寫)
    打開 myspider/spiders目錄里的 itcast.py,初始代碼如下:

    import scrapyclass ItcastSpider(scrapy.Spider):name = "itcast"allowed_domains = ["itcast.cn"]start_urls = ['http://www.itcast.cn/'] # 這里網址可以改成需要爬的def parse(self, response):pass


    要建立一個xxxSpider, 你必須用scrapy.Spider類創建一個子類,并確定了三個強制的屬性 和 一個方法。

    • name = “” :這個爬蟲的識別名稱,必須是唯一的,在不同的爬蟲必須定義不同的名字。

    • allow_domains = [ ] 是搜索的域名范圍,也就是爬蟲的約束區域,規定爬蟲只爬取這個域名下的網頁,不存在的URL會被忽略。

    • start_urls = [ ] :爬取的URL元祖/列表。爬蟲從這里開始抓取數據,所以,第一次下載的數據將會從這些urls開始。其他子URL將會從這些起始URL中繼承性生成。

    • parse(self, response) :解析的方法,每個初始URL完成下載后將被調用,調用的時候傳入從每一個URL傳回的Response對象來作為唯一參數,主要作用如下:

    將start_urls的值修改為需要爬取的第一個url

    start_urls = ["http://www.itcast.cn/channel/teacher.shtml"]

    2. 提取數據 extract() 方法和extract_first()方法

    scrapy框架中 response.xpath() 返回的是一個含有selector對象的列表

    names = response.xpath("//div[@class='tea_con']//h3/text()") # 返回一個含有selector對象的列表

    scrapy框架中 extract() 方法提取文字

    names = response.xpath("//div[@class='tea_con']//h3/text()").extract() # 使用 extract() 方法取到文字列表

    scrapy框架中 extract_first() 取列表第一個元素 如果沒有返回None

    item["name"] = li.xpath(".//h3/text()").extract_first() # 相當于item["name"] = li.xpath(".//h3/text()")[0].extract() if len(li.xpath(".//h3/text()")) > 0 else None

    總結

    以上是生活随笔為你收集整理的scrapy框架—spiders的全部內容,希望文章能夠幫你解決所遇到的問題。

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