scrapy框架使用经验

目录

(1)创建项目

(2)生成蜘蛛模板

(3)测试执行项目

(4)更改基础配置

(5)编写main.py文件

(6)保存爬到的数据

(7)使用mongodb存储数据

(8)USER_AGENT设置随机


(1)创建项目

我这里在windows下操作,linux大同小异

在D盘根目录打开命令窗口,执行命令

scrapy startproject XXX   #xxx为项目文件夹取名,会自动创建文件夹

例如我创建douban项目,命令为:  scrapy startproject douban

这个时候会有两层douban文件夹。

(2)生成蜘蛛模板

cd douban   #进入douban项目

scrapy genspider example example.com   #example为创建蜘蛛名,example.com为要爬的域名


注意这里虽然spiders在 douban/douban/下面,也不用进入两层文件夹下面,只需要进入一层就可以执行命令

我实际执行的命令为:scrapy genspider douban_spider movie.douban.com

(3)测试执行项目

进入项目根目录下,执行命令

scrapy crawl douban_spider    #douban_spider为当时取的spider名

发现报错:ModuleNotFoundError: No module named 'win32api'

pip安装即可,

命令:

pip install pypiwin32

(4)更改基础配置settings.py

打开setting.py文件:

①搜索USER_AGENT,随便找个浏览器复制USER_AGENT进去。

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36

②关闭 遵循Robot协议 设置

ROBOTSTXT_OBEY = False     #改为False

③禁止cookies,防止被ban

COOKIES_ENABLED = False  #改为False

④设置爬取时间间隔

DOWNLOAD_DELAY = 2  #设置了2秒

(5)编写main.py文件

在根目录下,新建main.py文件,写入代码:

from scrapy import cmdline
cmdline.execute('scrapy crawl douban_spider'.split())

就可以执行main.py来运行整个项目。

(6)保存爬到的数据

进入命令窗口,进入项目根目录,执行下面cmd命令:

保存的文件在项目根目录下。

scrapy crawl douban_spider -o test.json #保存json文件

scrapy crawl douban_spider -o test.csv  #保存csv文件

注意:douban_spider为爬虫文件名

如果点开csv文件发现是乱码,那就用notepad++打开文件,然后选择utf8-BOM 编码,再保存。这时候打开就是正常的了。

(7)使用mongodb存储数据

打开settings.py 文件,

在最后面加上mongo定义配置代码

mongo_host='127.0.0.1'
mongo_port=27017
mongo_db_name='douban'
mongo_db_collection='douban_movie'

在settings.py中,取消下面代码注释:

ITEM_PIPELINES = {
    'douban.pipelines.DoubanPipeline': 300,
}

打开pipelines.py文件,改为如下代码:

(引入pymongo插件)

import pymongo 
from douban.settings import mongo_host,mongo_port,mongo_db_name,mongo_db_collection

class DoubanPipeline(object):
    def __init__(self):
        host=mongo_host
        port=mongo_port
        dbname=mongo_db_name
        sheetname=mongo_db_collection
        client=pymongo.MongoClient(host=host,port=port)
        mydb=client[dbname]
        self.post=mydb[sheetname]

    def process_item(self, item, spider):
        data=dict(item)
        self.post.insert(data)
        return item

(8)USER_AGENT设置随机

(9)代理IP设置随机

(10)其他小技巧

xpath路径在谷歌浏览器中,选中html元素,右键->copy->Copy XPath。 可便捷的复制xpath路径,但是建议还是手动在谷歌浏览器中用xpath helper插件进行手动调式。

(11)命令

全局命令:

scrapy --help                 #帮助信息
scrapy version                #scrapy版本
scrapy version -v             #更多版本信息
scrapy startproject XXX       #创建项目,会自动创建文件夹
scrapy view  xxx              #该命令会讲网页document内容下载下来,并且在浏览器显示出来
scrapy shell                  #通过scrapy shell url地址进入交互模式
scrapy fetch xxx              #将网页的源代码下载下来并显示出来
scrapy settings               #获取当前的配置信息
scrapy runspider              #这个和通过crawl启动爬虫不同,这里是scrapy runspider 爬虫文件名称
scrapy bench                  #简单的性能测试工具
scrapy parse xxx              #查看parse方法生成的代码



项目命令:

scrapy list                   #返回项目里面所有spider的名称
scrapy crawl                  #这个是用去启动spider爬虫
scrapy check                  #check 用来检查代码是否有错误
scrapy edit xxx               #在命令行下编辑spider ### 不建议运行
scrapy genspider xxx xxx.com  #创建爬虫文件

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值