Scrapy框架爬虫小说网工作流程

1.需求工具 pycharm 小说网的域名 (www.qisuu.com)
第一步—–创建文件

创建成功后显示如图:

这里写图片描述

第二步——将创建在桌面上的scrapy文件用pycharm打开:
这是创建成功后在pycharm中的显示
这里写图片描述

pycharm左下角打开 Terminal
这里写图片描述

打开后如图 我第一次键入了一条命令 提示爬虫名字不能和项目名称一样,更改后再运行..成功建立爬虫文件 booksspider
创建爬虫文件命令: scrapy+ genspider+ 蜘蛛名称 +网站域名
这里写图片描述

创建成功后,出现爬虫文件:
这里写图片描述

接下来,就可以在爬虫文件中写爬虫代码了

第三步——–编写爬虫代码
1.红框框起来的头部 有一个是自带的,我提前 引用了几个 接下来我需要用到的 功能模块在这里就不再详细解释模块功能,下文用到后再解释.
2.椭圆里面的内容 填写你爬取开始的页面URL,这里是自动生成的,一般是不正确的,需要自己打开要爬取的初始页,将URL复制到这里.
这里写图片描述

3.代码思路
1)请求导航条上的每个按钮对应的页面
2)分别解析每个页面的电子书列表(主要获得电子书的详情url)
3)请求详情url,解析电子书的详细信息(书名,封面,评分,大小…下载地址)
4)根据下载地址下载电子书到本地

获取导航栏文字及链接

def parse(self, response):
    a_list = response.xpath("//div[@class='nav']/a[@target='_blank']")
    for a in a_list:
        # 分类名称
        category_name = a.xpath("text()").extract_first("")
        # 拼接完整的分类url
        category_url = urlparse.urljoin(response.url, a.xpath("@href").extract_first(""))
        # 将分类地址转发给downloader下载并将结果传给parse_books_list
        # meta:专门用来传递参数,类型是字典
        yield scrapy.Request(
            url=category_url,
            callback=self.parse_books_list,
            meta={"category_name": category_name, }
        )

获取每本书链接

def parse_books_list(self, response):
href_list = response.xpath(“//div[@class=’listBox’]/ul/li/a/@href”).extract()
for href in href_list:
list_href = urlparse.urljoin(response.url, href)
yield scrapy.Request(
url=list_href,
callback=self.parse_books_detail,
meta=response.meta,
# meta={“category_name”: response.meta[‘category_name’],}
)
all_pages = response.xpath(“//select[@name=’select’]/option/@value”).extract()
for page in all_pages:
detail_url = urlparse.urljoin(response.url, page)
yield scrapy.Request(
url=detail_url,
callback=self.parse_books_list,
meta=response.meta
)
进入书本详细页 获取书本详细信息及 下载链接 封面链接

def parse_books_detail(self, response):
info_div = response.xpath(“//div[@class=’detail_right’]”)
title = info_div.xpath(“h1/text()”).extract_first(“”)
li_list = info_div.xpath(“ul/li”)
size = li_list[2].xpath(“text()”).extract_first(“”)
size = size.replace(u”文件大小:”, “”).strip()
date_time = li_list[4].xpath(“text()”).extract_first(“”)
date_time = date_time.replace(u”发布日期:”, “”).strip()
user = li_list[6].xpath(“a/text()”).extract_first(“”)
download_times = li_list[1].xpath(“text()”).extract_first(“”)
download_times = download_times.replace(u”下载次数:”, “”).strip()
book_degree = li_list[7].xpath(“em/@class”).extract_first(“”)
book_degree = book_degree.replace(“lstar”, “”).strip()
download_url = response.xpath(“//a[@class=’downButton’]/@href”)[1].extract()
img_url = response.xpath(“//div[@class=’detail_pic’]/img/@src”).extract_first(“”)
img_url = urlparse.urljoin(response.url, img_url)
category_name = response.meta[‘category_name’]
print title, user, date_time, category_name

    item = BooksItem()
    item['title'] = title
    item['size'] = size
    item['date_time'] = date_time
    item['user'] = user
    item['download_times'] = download_times
    item['book_degree'] = book_degree
    # 小说要以GBK格式进行存储
    ########################
    item['download_url'] = [u"%s" % download_url]
    item['img_url'] = [img_url]
    ########################注意以列表方式存储
    item['category_name'] = category_name
    yield item

第四步——设置item /与存储有关
将需要存储的信息写入,如图所示:
这里写图片描述

第五步——配置settings /与下载有关
打开settings,找到红方框中代码,原本是被注释掉的,将 ITEM_PIPELINES{} 解注释.原本就有的内容注释掉,另外添加两条与下载图片与文本的代码. 最后,在ITEM_PIPELINES{}下面键入四行代码,分别为图片和文本的下载链接与存储路径
这里写图片描述

第六步——在Terminal中输入运行命令
scrapy+crawl+爬虫名称
这里写图片描述

运行后就会出现这个啦,图片和文字全部存入这两个文件夹中
这里写图片描述

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值