scrapy之创建scrapy项目

scrapy之创建scrapy项目

1. scrapy的安装

注: scrapy需要python3.8+

使用以下命令安装scrapy项目

pip install scrapy

2. 创建scrapy项目

2.1 创建scrapy项目

scrapy startproject baidutop # 创建一个baidutop项目

2.2 创建spider

cd baidutop # 进入到baidutop文件夹中,注意baidutop文件夹里面还有一个baidutop文件夹,这里选择外面的这个baidutop文件夹
scrapy genspider topbaidu top.baidu.com # topbaidu是spider的名称(每个spider应该有唯一的一个名称),top.baidu.com为spider要采集的域名

2.3 初始spider

import scrapy
class TopbaiduSpider(scrapy.Spider):
    name = "topbaidu"  # spider名称
    allowed_domains = ["top.baidu.com"]  # 允许采集的域名
    start_urls = ["https://top.baidu.com"]  # 自动生成的初始url,没有start_requests函数将自动从这里面开始进行采集

    # 解析函数,如果没有指定callback,请求完成后将自动回调parse进行解析
    def parse(self, response):
        pass

2.4 完整版spider

import scrapy

# 每一个自设置的spide都要继承scrapy.Spider
class TopbaiduSpider(scrapy.Spider):
    name = 'topbaidu'
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36'
    }

    def start_requests(self):
        urls = [
            'https://top.baidu.com/board?tab=realtime'
        ]
        for url in urls:
            yield scrapy.Request(
                url,
                headers=self.headers
            )

    def parse(self, response):
        urls = response.xpath("//a[@class='title_dIF3B ']/@href").getall()
        for url in urls:
            print('======================')
            print(url)
            print('======================')
            yield scrapy.Request(
                url,
                headers=self.headers,
                callback=self.parse_detail
            )

    def parse_detail(self, response):
        items = {
            'title': ''.join(response.xpath("//title/text()").getall())
        }
        self.log(items)
        yield items

2.5 运行spider

scrapy crawl topbaidu # 正常运行
scrapy crawl topbaidu -o top.json # 将items写入到top.json文件中,生成json文件
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值