当前位置:   article > 正文

Scrapy+MongoDB爬虫实例教程_mongoclient scrapy

mongoclient scrapy

目录

一、MongoDB

1、下载、安装、配置环境变量、路径配置、启动

2、python操作MongoDB

二、Scrapy

1、安装、创建项目

2、修改、增加代码

①、编写 Spider 类

②、修改items.py

③、修改settings.py

④、修改pipelines.py

⑤、在tutorial下增加main.py

3、启动爬虫

4、成功



本机环境:python3,Windows10

我的视频讲解:https://www.bilibili.com/video/BV1xh411C7Xc/

一、MongoDB

1、下载、安装、配置环境变量、路径配置、启动

2、python操作MongoDB

a. 安装pymongo

pip install pymongo

b. 基本操作

  1. import pymongo
  2. myclient = pymongo.MongoClient("mongodb://localhost:27017/") #使用MongoClient对象,连接数据库
  3. collist = myclient.list_database_names() # 获取所有数据库
  4. mydb = myclient["runoobdb"] # 数据库名
  5. mycol = mydb["sites"] # collection集合(类似SQL的表)
  6. # 插入一条数据
  7. mydict = { "_id": 1, "name": "RUNOOB", "cn_name": "菜鸟教程"}
  8. mycol.insert_one(mydict)
  9. # 插入一组数据
  10. mylist = [
  11. { "_id": 2, "name": "Google", "address": "Google 搜索"},
  12. { "_id": 3, "name": "Facebook", "address": "脸书"},
  13. { "_id": 4, "name": "Taobao", "address": "淘宝"},
  14. { "_id": 5, "name": "Zhihu", "address": "知乎"}
  15. ]
  16. mycol.insert_many(mylist)
  17. # 查找
  18. for x in mycol.find({},{ "_id": 0, "name": 1, "alexa": 1 }):
  19. print(x)
  20. # 删除全部
  21. mycol.delete_many({})
  22. print(list(mycol.find()))

二、Scrapy

1、安装、创建项目

scrapy startproject tutorial

2、修改、增加代码

①、编写 Spider 类

tutorial/spiders目录下增加quotes_spider.py文件

  1. import scrapy
  2. from ..items import TutorialItem
  3. class QuotesSpider(scrapy.Spider):
  4. name = "quotes"
  5. # 也可以如下
  6. # start_urls = ['http://quotes.toscrape.com/page/1/']
  7. def start_requests(self):
  8. url_bone = 'http://quotes.toscrape.com/page/{}/'
  9. for i in range(1,3): # 要能够结束/有出口,否则为死循环
  10. url = url_bone.format(i)
  11. print('url: {}'.format(url))
  12. yield scrapy.Request(url=url, callback=self.parse)
  13. def parse(self, response):
  14. item = TutorialItem()
  15. div_list = response.xpath('/html/body/div/div[2]/div[1]/div')[:3]
  16. for div in div_list:
  17. words = div.xpath('./span[1]/text()').extract_first()
  18. person = div.xpath('./span[2]/small/text()').extract_first()
  19. item['words'] = words
  20. item['person'] = person
  21. yield item

通过xpath来定位:

a、F12 检查, 找到对应位置,右键copy-copy xpath

b、使用chrome插件 xpath helper

 

②、修改items.py

  1. class TutorialItem(scrapy.Item):
  2. # define the fields for your item here like:
  3. words = scrapy.Field() # 一个人说的话
  4. person = scrapy.Field() # 说话的人

③、修改settings.py

  1. ROBOTSTXT_OBEY = False #修改为False
  2. LOG_LEVEL = 'ERROR' #只有在错误时才打印日志
  3. DOWNLOAD_DELAY = 1 # 下载时间间隔改为1
  4. # 配置默认的请求头
  5. DEFAULT_REQUEST_HEADERS = {
  6. "User-Agent" : "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:61.0) Gecko/20100101 Firefox/61.0",
  7. 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'
  8. }
  9. # 配置使用Pipeline
  10. ITEM_PIPELINES = {
  11. 'tutorial.pipelines.TutorialPipeline': 300,
  12. }

④、修改pipelines.py

  1. import pymongo
  2. class TutorialPipeline(object):
  3. def __init__(self):
  4. super().__init__()
  5. myclient = pymongo.MongoClient("mongodb://localhost:27017/")
  6. mydb = myclient["runoobdb"]
  7. self.mycol = mydb["quotes"]
  8. def process_item(self, item, spider):
  9. print(item)
  10. self.mycol.insert_one(dict(item))
  11. return item

⑤、在tutorial下增加main.py

  1. from scrapy import cmdline
  2. cmdline.execute('scrapy crawl quotes'.split())

3、启动爬虫

cd到main.py的位置 xx/tutorial/tutorial

python main.py

4、成功

参考资料:

scrapy官方手册中文版

MongoDB文档

https://blog.csdn.net/qq_41837900/article/details/96489994

待爬网址:http://quotes.toscrape.com/page/1/

 

本项目代码位置:https://download.csdn.net/download/GreatXiang888/15108875

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/928745
推荐阅读
相关标签
  

闽ICP备14008679号