Scrapy系列一:第一个Scrapy项目

一.创建项目

命令行切换到对应的文件夹下

执行命令scrapy startproject qidian_hot

qidian_hot是指项目名

执行完成后文件夹下会创建名为qidian_hot的文件夹

 

 

二.用pyCharm打开项目

注意打开的目录,别打开了下一级的qidian_hot目录

 

三.确定需求(爬取的目标)

网页地址:https://www.qidian.com/rank/hotsales?style=1&page=1

这三个div对应内容里的具体信息

 

四.编写爬虫

1.在spiders文件夹下创建qidian_hot_spider.py文件

spiders文件夹是用来存放用于解析页面数据的程序文件

 

2.导入Request模块,和Spider基类

Request模块:根据目标网站的地址生成请求

 

3.定义爬虫名称和起始的URL列表

 

4.编写数据解析函数

(1).使用xpath定位到小说内容的div元素

下图为定位目标

定位位置为class为book-mid-info的div

 

(2).读取每部小说的详细信息,并逐条返回

图1是主要代码,图2是div元素内对应的节点内容

 

 

5.执行爬虫程序

切换到qidian_hot文件夹下执行命令:

 scrapy crawl hot或scrapy crawl hot -o hot.csv

hot是代码指定的name值(爬虫名称),-o hot.csv是把结果写到当前文件夹下的hot.csv文件(文件会自动创建,文件名可以随便起)

结果

 

 

 

整体代码

from scrapy import Request
from scrapy.spiders import Spider

class HotSalesSpider(Spider):
    # 爬虫名称
    name = "hot"

    #起始URL列表
    start_urls = ["https://www.qidian.com/rank/hotsales?style=1&page=1"]

    #数据解析,此时response对象已经有网页的html数据
    def parse(self, response):
        #使用xpath定位到小说内容的div元素
        list_selector =  response.xpath("//div[@class='book-mid-info']")
        #读取每部小说的元素
        for one_selector in list_selector:
            #获取小说名称
            name = one_selector.xpath("h4/a/text()").extract()[0]
            #获取作者,第一个p标签的第一个a标签的内容
            author = one_selector.xpath("p[1]/a[1]/text()").extract()[0]
            #获取类型
            type = one_selector.xpath("p[1]/a[2]/text()").extract()[0]
            #获取形式
            form = one_selector.xpath("p[1]/span/text()").extract()[0]
            #把爬取的数据保存到字典
            hot_dict = {
                "name" : name,
                "author" : author,
                "type" : type,
                "form" : form
            }
            yield hot_dict

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值