scrapy爬虫简单案例(简单易懂 适合新手)
阅读原文时间:2022年04月03日阅读:1

爬取所有的电影名字,类型,时间等信息

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.运行结果图