Python------python爬虫数据导入MongoDB数据库

12 篇文章 1 订阅
11 篇文章 0 订阅

开发前环境配置:

Pycharm开发工具下载:

链接:https://pan.baidu.com/s/1LaRfZspqzYXsm5XjbsSXwQ 
提取码:5210

插件下载:DatabaseTools

链接:https://pan.baidu.com/s/13csVBHGVm0uMKsnhURWVuA 
提取码:5210

 mongo Plugin

链接:https://pan.baidu.com/s/19QyBfKVIA5aRluCY2XNFrQ 
提取码:5210

Python下载:

链接:https://pan.baidu.com/s/1CwVEs-UfdNbFpobnx9vM8w 
提取码:5210

64位系统的安装这个!!!

  MongoDB下载:

链接:https://pan.baidu.com/s/1N1TrhoRDgqTmgQlrY6CUXg 
提取码:5210

1. 在根目录中创建mongo.conf文件:复制以下内容

dbpath=E:\mongodb\data #数据库路径 (自己创建的路径!!!) 
logpath=E:\mongodb\logs\mongo.log #日志输出文件路径   (自己创建的路径!!!) 
logappend=true #错误日志采用追加模式  
journal=true #启用日志文件,默认启用  
quiet=true #这个选项可以过滤掉一些无用的日志信息,若需要调试使用请设置为false  
port=27017 #端口号 默认为27017  

2.将mongodb命令加入到环境变量中:

# F:\SoftWares\mongodb-3.4.21\bin
右键计算机 => 属性 => 高级系统设置 => 环境变量 => 系统变量中path尾部添加

3.依次运行一下命令:(管理员权限打开CMD!!!)

# 此时浏览器访问:  127.0.0.1:27017 出现下面内容,证明成功!!!
# It looks like you are trying to access MongoDB over HTTP on the native driver port.
mongod --config "F:\SoftWares\mongodb-3.4.21\mongo.conf"  
# 将MongoDB服务添加到电脑系统中:(service.msc 命令可打开服务找到对应的名字)
mongod --config "F:\SoftWares\mongodb-3.4.21\mongo.conf" --install --serviceName "mongodb"  # mongodb为添加的服务名字
# 接着就是服务的开启和停止:开启后即可连接该数据库,亦可通过127.0.0.1:27017访问页面
net start mongodb  # 开启mongodb服务
net stop mongodb   # 停止mongodb服务

4. mongodb配置完成~~~

MongoDB可视化工具下载:

链接:https://pan.baidu.com/s/1DsVtd2_ivsqwLViJ_if_aQ 
提取码:5210

爬取的数据可以通过该博客开发接口: node接口和mongodb搭配写接口

正式开发爬虫文件: python文档

1.安装插件python mongodb驱动,scrapy爬虫插件

pip install scrapy
pip install pymongo

2.创建蜘蛛项目

scrapy startproject ExportIntoMongodb

特别福利:项目创建完毕,进入项目根目录.直接命令创建爬虫文件!!!

scrapy genspider -h  查看命令
scrapy genspider -l   查看模板名列表
scrapy genspider -t basic taobaoSpider taobao.com 采用参数的形式来生成指定模板
scrapy genspider taobaoSpider tabobao.com 创建基础爬虫模板

# 直接创建基础爬虫文件,省去创建文件的操作以及内容结构的编写!!!
# scrapy genspider taobaoSpider [要爬取的url]  [-t 模板名称] 
# 模板名称 : basic/crawl/csvfeed/xmlfeed
# 爬取的路径,域名即可 [tabobao.com|baidu.com|lab.scrapyd.cn|examole.basic.cn]
scrapy genspider taobaoSpider tabobao.com 创建基础爬虫模板

3.自定义要爬取的字段:items.py

import scrapy


class ExportintomongodbItem(scrapy.Item):
    # define the fields for your item here like:
    # name = scrapy.Field()
    tag = scrapy.Field()  # 标签
    content = scrapy.Field()  # 名言内容
    author = scrapy.Field()  # 作者
    pass

4. 编写pipeline.py

import pymongo  # 链接mongodbd插件

class ExportintomongodbPipeline:
    # 初始函数
    def __init__(self):
        # 链接数据库
        client = pymongo.MongoClient('127.0.0.1', 27017)  # 创建链接
        # 连接所需数据库名
        db = client['MingYanSpider']
        # 连接对应的库表
        self.post = db['mingyan']
    
    def process_item(self, item, spider):
        postItem = dict(item)  # 转化为字典形式
        self.post.insert(postItem)  # 向表中插入一条数据
        return item  # 可以输出到控制台,可以不写

5. 设置相关属性值settings.py

ITEM_PIPELINES = {
   'exportIntoMongodb.pipelines.ExportintomongodbPipeline': 300,
}

6.爬虫核心代码:exportInto.py

# -*- coding: utf-8 -*-
import scrapy  # 导入核心

from exportIntoMongodb.items import ExportintomongodbItem  # 导入要查询的参数

class Intomongodbspider(scrapy.Spider):
	name = 'Intomongodbspider'  # 爬虫名字
	allowed_domains = ["lab.scrapyd.cn"]
	start_urls = ['http://lab.scrapyd.cn/']
	
	'''
	定义函数:取到需要的文字
	'''
	def parse(self, response, **kwargs):
		sayings = response.css('div.quote')  # 取到整页的名言盒子
		item = ExportintomongodbItem()  # 实例化Item类
		# 提取名言
		for v in sayings:
			item['content'] = v.css('.text::text').extract_first()  # 提取名言内容
			item['author'] = v.css('.quote.post span small::text').extract_first()  # 提取名言内容
			tag = v.css('.tags .tag::text').extract()  # 提取到标签数组
			item['tag'] = ','.join(tag) if len(tag) > 0 else '暂无标签'  # 标签
			# 弹出该item对象 把取到的内容提交到pipline处理
			yield item
		# css选择器提取下一页链接
		next_page = response.css('li.next a::attr(href)').extract_first()  # 提取到下一页链接
		if next_page is not None:
			next_page = response.urljoin(next_page)
			yield scrapy.Request(next_page, callback=self.parse)

7.运行爬虫爬取数据

scrapy crawl Intomongodbspider

福利代码:利用标签参数来查询导入到数据库

上面的代码除了核心代码要改动外,其他的不需要改动,直接复制~

接着就是将上面的6和7改成下面的6和7即可!!!

6. 爬虫核心代码:exportInto.py

# -*- coding: utf-8 -*-
import scrapy  # 导入爬虫核心库
from exportIntoMongodb.items import ExportintomongodbItem  # 导入自定义参数字段
class TagInfoMongoDB(scrapy.Spider):
	name = 'TagIntomongodbspider'  # 爬虫名

	# 定义搜索入参的函数
	def start_requests(self):
		start_urls = 'http://lab.scrapyd.cn/'
		tag = getattr(self, 'tag', None)  # 加入参数搜索
		if tag is not None:
			print('13', start_urls + 'tag/' + tag)
			yield scrapy.Request(start_urls + 'tag/' + tag, callback=self.parse)
			
	def parse(self, response, **kwargs):
		lists = response.css('div.quote')  # 获取到当前页的包裹名言字段的盒子集合
		# listsLen = range(len(lists))  # 获取到该集合的范围(0[,10])
		item = ExportintomongodbItem()  # 实例化Item类
		for v in lists:
			item['content'] = v.css('.text::text').extract_first()  # 获取到名言的内容
			item['author'] = v.css('.quote.post span small::text').extract_first()  # 获取到作者的名字
			tags = v.css('.tags .tag::text').extract()  # 获取到标签数组
			item['tag'] = ','.join(tags) if len(tags) > 0 else '暂无标签'
			yield item
		# css选择器提取下一页链接
		next_page = response.css('li.next a::attr(href)').extract_first()  # 提取到下一页链接
		if next_page is not None:
			next_page = response.urljoin(next_page)
			yield scrapy.Request(next_page, callback=self.parse)

7.运行爬虫爬取数据

scrapy crawl Intomongodbspider -a tag=爱情|哲学|泰戈尔  # 选其一作为查询条件

8.结束爬虫简单项目的开发!!!!!!!!!!!!!!!!!!!!!!!!


这里我试了下,对应的开发url可能访问不了了,但是代码逻辑不变。参考写法即可!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

绝世唐门三哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值