目录
(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 #创建爬虫文件