1. 程式人生 > 其它 >scrapy爬蟲簡單案例(簡單易懂 適合新手)

scrapy爬蟲簡單案例(簡單易懂 適合新手)

爬取所有的電影名字,型別,時間等資訊

1.準備工作

爬取的網頁 https://www.ddoutv.com/f/27-1.html

建立專案

win + R 開啟cmd輸入

scrapy startproject 專案名

然後在pycharm終端輸入

scrapy genspider 類名 xxx.com
一個爬蟲類就建立好了

2.思路分析

  • 我們爬取全站資料首先要將分頁的url規律找到
  • 因為我們的資料在二級頁碼,所以需要在一級頁面裡面拿到所以的二級頁碼url再進行請求
  • 二級頁碼url拿到後就可以開始寫xpath獲取需要的資料了*
  • 具體註釋在程式碼內
    程式碼如下
    `import scrapy

from move.items import MoveItem

class TestSpider(scrapy.Spider):
name = 'Test'

# allowed_domains = ['xxx.con']
def start_requests(self):
    # 有4896頁資料所有迴圈請求
    for i in range(1, 4897):
        # html分頁符用i代替
        start_urls = f'https://www.ddoutv.com/f/27-{i}.html'
        # 手動請求url
        yield scrapy.Request(url=start_urls, callback=self.parse)

def parse(self, response, **kwargs):
    # 爬取所有的二級頁面的url
    all_a = response.xpath('//div[@class="stui-pannel-box"]/div[@class="stui-pannel_bd"]/ul/li')
    # 遍歷出來
    for li in all_a:  # type:scrapy.Selector
        link = li.xpath('./div/a/@href').extract()[0]
        # 將url拼接完整
        links = response.urljoin(link)
        # 回撥
        yield scrapy.Request(url=links, callback=self.reques)

def reques(self, response):
    # 獲取二級頁面的資料
    all_name = response.xpath('//div[@class="stui-content"]/div[@class="container"]/div[@class="row"]/div/div[2]')
    for i in all_name:
        name = i.xpath('./h1/text()').extract_first(default=0)
        print(name)
        types = i.xpath('./p[1]/a[1]/text()').extract_first(default=0)
        print(types)
        address = i.xpath('./p[1]/a[2]/text()').extract_first(default=0)
        print(address)
        year = i.xpath('./p[1]/a[3]/text()').extract_first(default=0)
        print(year)
        actor = i.xpath('./p[2]/text()').extract_first(default=0)
        print(actor)
        director = i.xpath('./p[3]/text()').extract_first(default=0)
        print(director)
        update = i.xpath('./p[4]/text()').extract_first(default=0)
        print(update)`

3.執行結果圖

到此一個簡單的scrapy爬取專案就完成啦!