发布于2019-08-08 11:29 阅读(806) 评论(0) 点赞(2) 收藏(2)
本项目代码可参考 imzhizi/myspider: a scrapy demo with elasticsearch
建议爬虫项目都创建虚拟环境
虚拟环境在 Python 项目中真的非常重要并且非常有意义
虚拟空间的使用可参考 Python 虚拟空间的使用 - 难以想象的晴朗.
Copy# 创建虚拟环境
mkdir spider-demo
cd spider-demo
python3 -m venv spidervenv
# 进入虚拟环境
source spidervenv/bin/activate
# 安装 Scrapy
pip install scrapy -i https://pypi.tuna.tsinghua.edu.cn/simple
Copy# 使用 scrapy 新建工程
scrapy startproject myspider
# 此时文件夹中会创建一个 myspider 文件夹
# 项目结构大概是
spider-demo # 根文件夹
├── myspider # 创建的爬虫项目, 若使用 IDE, 可把此文件夹当作根文件夹
│ ├── myspider # 真正的爬虫代码文件夹
│ │ ├── __init__.py
│ │ ├── items.py # 用于规定爬取数据形成的 model
│ │ ├── middlewares.py # 中间件
│ │ ├── pipelines.py # 流水线, 决定了爬取的数据的流向
│ │ ├── settings.py # 配置信息
│ │ └── spiders # 爬虫代码所在地
│ │ ├── __init__.py
│ │ └── __pycache__
│ └── scrapy.cfg # 项目设置
└── spidervenv # 此处为虚拟环境文件, 已经忽略
Copy# 首先来到爬虫代码文件夹
cd myspider/myspider/spiders
# 使用 scrapy genspider 创建简单的爬虫模版
# 会在 spiders 文件夹下创建名为 doubanSpider.py 的文件, 同时该爬虫也命名为 doubanSpider
scrapy genspider doubanSpider douban.com
经过一系列创建操作, 基本上一个爬虫应该有的组件就都准备好了, 一般情况下会使用命令 scrapy crawl name
启动爬虫, 但为了方便 IDE (PyCharm) 中直接开始爬虫, 一般会在 spider-demo/myspider
文件夹下创建 start.py
文件, 其中包含以下代码
若使用 PyCharm 打开项目,还需将 interpreter 改为 spidervenv
Copyfrom scrapy.cmdline import execute
import sys
import os
# 将系统当前目录设置为项目根目录
# os.path.abspath(__file__) 为当前文件所在绝对路径
# os.path.dirname 为文件所在目录
sys.path.append(os.path.dirname(os.path.abspath(__file__)))
execute(["scrapy", "crawl", "doubanSpider"])

Copy# items.py
class DoubanItem(scrapy.Item):
title = scrapy.Field()
douban_link = scrapy.Field()
rating = scrapy.Field()
def save_to_db():
douban = DoubanModel()
douban.title = self['title']
douban.douban_link = self['douban_link']
douban.rating = self['rating']
douban.save()
Copy# pipelines.py
class DoubanPipeline(object):
def process_item(self, item, spider):
item.save_to_db()
return item
Copy# ES model, 继承的 Document 提供了 save() 方法
# 一般保存在 spiders 文件夹上层
class DoubanType(Document):
title = Text()
douban_link = Text()
rating = Double()
为了让爬虫顺利进行, 需要对 settings.py
进行一些修改
Copy# settings.py
## 不遵守 robot.tx 规则
ROBOTSTXT_OBEY = False
## 下载延迟
DOWNLOAD_DELAY = 3
## 用户代理( 爬豆瓣用 )
USER_AGENT = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'
## 请求头
DEFAULT_REQUEST_HEADERS = {
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language': 'en',
}
## 启用的流水线
ITEM_PIPELINES = {
'myspider.pipelines.MyspiderPipeline': 300,
}
参考项目
【Python分布式爬虫开发搜索引擎_python数据挖掘/抓取_python网页抓取_工程师】-慕课网
作者:232hdsjdh
链接:https://www.pythonheidong.com/blog/article/13687/dd8dc9c40e56e37165b7/
来源:python黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!