爬蟲--Scrapy簡易爬蟲

像風一樣的男人@發表於2020-10-07

1.建立爬蟲專案檔案 meiju
2.修改settings中爬蟲協議為False
3.meiju目錄下,再次新建爬蟲檔案
–scrapy genspider <檔名> <爬蟲的url> 這裡用meijuSpider檔名
4.主專案下建立快速除錯方式

在meijuSpider.py中

import scrapy
# 爬蟲類: 繼承scrapy.Spider
from ..items import MeijuItem


class MeijuspiderSpider(scrapy.Spider):
    # 爬蟲名:唯一
    name = 'meijuSpider'

    # 允許的域名列表
    allowed_domains = ['meijutt.tv']

    # 第一個爬取的url
    start_urls = ['https://www.meijutt.tv/new100.html']

    #  解析響應資料
    # Scrapy內部爬取完成後自動呼叫,並返回響應資料
    def parse(self, response):
        # print(type(response))
        # <class 'scrapy.http.response.html.HtmlResponse'>

        # print(response.text)  # 字串網頁內容
        # print(response.body)  # 二進位制網頁內容

        # scrapy整合了xpath
        movie_list = response.xpath('//ul[@class="top-list  fn-clear"]/li')
        # print(movie_list)

        for movie in movie_list:
            # 電影名稱
            # m_name = movie.xpath('./h5/a/text()')[0].extract()  # 獲取data的文字資料
            # m_name = movie.xpath('./h5/a/text()').extract_first()  # 推薦 獲取data的文字資料

            m_name = movie.xpath('./h5/a/text()').get()  # 推薦 獲取data的文字資料
            # print(m_name)

            # 電影型別
            m_type = movie.xpath('./span[@class="mjjq"]/text()').get()
            # 電視臺
            m_tv = movie.xpath('./span[@class="mjtv"]/text()').get()
            # 時間
            m_time = movie.xpath('./div[@class="lasted-time new100time fn-right"]/font/text()').get()

            # print(m_name, m_type, m_tv, m_time)

            # 建立item
            item = MeijuItem()
            item["mname"] = m_name  # 這裡要以字典的方式寫
            item["mtype"] = m_type
            item["mtv"] = m_tv
            item["mtime"] = m_time

            # 這裡返回的item會進入到管道piplines中
            yield item

相關文章