利用scrapy进行爬虫(windows系统)

本文介绍了在Windows环境下使用Scrapy框架搭建爬虫的详细步骤,包括下载和安装Twisted与Scrapy库,创建Scrapy项目,编写爬虫文件,设置配置文件以及执行爬虫项目。博客作者通过实例展示了如何爬取豆瓣Top250书籍的书名、出版信息和评分,并分享了遇到的问题及解决方案。


前言

提示:这是我第二篇博客,上一篇是在今天下午:
今天学习了利用scrapy进行爬虫,从早上一直折腾到晚上,出了几个问题,困扰了我半天,虽然一点一点的解决了,最终实现了想要的结果,但是对于那些问题为什么是那样解决的,我现在还不是很懂,今天写了这个博客,一方面是为了巩固自己今天学习到的东西,另一方面,是希望自己若干年以后看到这篇博客,不会再向当初一样,知其然却不知其所以然,算是自己心里的一个约定吧。

一、scrapy是什么?

Scrapy 是一套基于基于Twisted的异步处理框架,纯python实现的爬虫框架,用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页内容以及各种图片。

二、步骤

1.下载库

下载链接:

https://www.lfd.uci.edu/~gohlke/pythonlibs/
需要下载两个:Twisted和Scrapy,根据自己的pycharm版本去选择对应库的版本。
下载好后,打开cmd终端,查看所在文件位置,将下载好的库放入这个位置下(当然,也可以将cmd打开至你的库的所在位置):

2.安装库

先安装Twisted再安装Scrapy,命令都是:pip install ×××××.whl
如果安装Scrapy时出现问题,先输入命令:pip install wheel

3.创建Scrapy项目

找到你pycharm的项目文件所在位置,创建项目文件scrapy_project,然后将cmd定位至该位置,输入scrapy startproject douban,enter就可以了,位置可在pycharm中看到:(已经创建过了我就不创建了)

![](https://img-blog.csdnimg.cn/20210215211047458.png

4.新建爬虫文件

项目创建好之后,pycharm中会出现对应项目文件,如下图,其中文件spiders是爬虫文件,需要在该文件下新建一个文件Book_douban_Top250,并导入库(图中Book_douban_Top250.py是已经新建过的)

5.代码

该项目中有许多文件,但不是所有文件在此项目上是用得上的
Book_douban_Top250.py主要负责爬虫部分:(记得引入库)

import scrapy
import bs4
from ..items import BookDoubanItem

class DoubanSpider(scrapy.Spider):
    """定义一个爬虫类"""

    name='book_douban'  # 定义爬虫的名字
    allowed_domains=['book.douban.com']  # 定义允许爬虫爬取的网址域名(不需要加https://)。如果网址的域名不在这个列表里,就会被过滤掉
    start_urls=[]

    for x in range(3):
        url='https://book.douban.com/top250?start='+format(x * 25)
        start_urls.append(url)

    def parse(self,response):
        """parse是默认处理response的方法"""

        bs=bs4.BeautifulSoup(response.text,'html.parser')
        datas=bs.find_all('tr',class_="item")

        for data in datas:

            item=BookDoubanItem()
            item['title']=data.find_all('a')[1]['title']
            item['publish']=data.find('p',class_='pl').text
            item['score']=data.find('span',class_='rating_nums').text

            # print(response.text)

            yield item  # 把获得的item传递给引擎


items.py是作为容器使用,用于记录数据:

import scrapy
# 导入scrapy

class BookDoubanItem(scrapy.Item):
    """定义一个类BookDoubanItem,它继承自scrapy.Item"""

    title=scrapy.Field()  # 定义书名的数据属性
    publish=scrapy.Field()  # 定义出版信息的数据属性
    score=scrapy.Field()  # 定义评分的数据属性

settings.py中的USER_AGENT和ROBOTSTXT_OBEY需要做修改:
USER_AGENT改成我爬取网站对应的部分
ROBOTSTXT_OBEY改成False,目的是不遵循robots协议

USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'

ROBOTSTXT_OBEY = False

6.项目执行

此时,总体完成了,但是有一个问题:现在没有办法让scrapy项目执行,所以需要再新建一个文件,用于执行项目,需要执行时就只要运行该文件:
新建文件main.py(注意该文件所在位置,位置错误会导致无法正确运行)

from scrapy import cmdline
# 导入cmdline模块,可以实现控制终端命令行

cmdline.execute(['scrapy','crawl','book_douban'])
# 用execute()方法,输入运行scrapy的命令

在这里插入图片描述

还有一种方法,直接在cmd运行,有个文件名叫scraypy.cfg,这是该项目的配置文件,将cmd定位到该文件所处位置,输入scrapy crawl book_douban也可以:

总结

以上就是对该项目的总结,代码部分没有讲解太多,因为我大部分时间都花在了库的下载和安装上了,到现在怎么安装上的我都还不能说出个所以然来,不过我如果后面有时间可能会再做一个代码部分的讲解。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值