首页 > 编程源码 > 爬虫相关

爬虫相关

楼主:三哥✨?? [3级] · 2019-12-11 ·  浏览11315 · 编程源码 · ID:

网络爬虫(又称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。

- 版权声明 - 1、本帖所有言论和图片等纯属网友个人意见,与流星社区立场无关;
2、其他单位或个人使用、转载或引用本帖时必须同时征得该帖子作者三哥✨??流星社区的同意;
3、备注原文地址:https://bbs.liuxingw.com/t/19597.html,可忽略第2条;
4、帖子作者需承担一切因本文发表而直接或间接导致的相关责任;
5、如本帖内容或部分内容转载自其它媒体,这并不代表本站赞同其观点和对其真实性负责;
6、如本帖若为资源类,将仅限用于学习和研究目的,您必须在下载后的24个小时之内,从您安装或使用的设备中彻底删除上述内容;
7、如果您喜欢该程序,请支持正版软件,购买注册,可以得到更好的正版服务;
8、如本帖侵犯到任何版权或违法问题,请立即邮件告知我们,我们将及时予以处理。
250条回复 |  最后回复于2019-12-12

三哥✨?? [3级]

监控脚本
发布于2019-12-11

回复列表

  • 内容加载中...

说点什么...

三哥✨?? [3级]

考虑到可能要增加爬虫到监控中,因此这里使用了热更新对监控进行动态配置。
发布于2019-12-11

回复列表

  • 内容加载中...

说点什么...

三哥✨?? [3级]

配置文件 influx_settings.conf 主要用于热更新相关设置。
发布于2019-12-11

回复列表

  • 内容加载中...

说点什么...

三哥✨?? [3级]

# [需要监控的 MongoDB 数据的 数据库名 和 集合名]
[db]
db_collection_dict = {
'learn_selenium_doubandianying': 'movie_info',
}

# [设置循环间隔时间]
[time]
interval = 15
发布于2019-12-11

回复列表

  • 内容加载中...

说点什么...

三哥✨?? [3级]

如何动态读取这个配置文件的设置呢?需要写一个脚本来监控。代码如下:
发布于2019-12-11

回复列表

  • 内容加载中...

说点什么...

神不散 [1级]

发布于2019-12-11

回复列表

  • 内容加载中...

说点什么...

三哥✨?? [3级]

import ast
import time
import pymongo
import traceback
from configparser import ConfigParser
from influxdb import InfluxDBClient
from datetime import datetime
from os.path import getmtime

# 配置 influxdb
client = InfluxDBClient(host='localhost', port=8086) # influxdb默认端口为8086

# 创建 database
client.create_database('Spider')
# switch 到 database
client.switch_database('Spider')

# 设定配置文件
config_name = 'influx_settings.conf'

WATCHED_FILES = [config_name]
WATCHED_FILES_MTIMES = [(f, getmtime(f)) for f in WATCHED_FILES]

_count_dict = {}
_size_dict = {}

# 获取配置文件中的设置
def parse_config(file_name):
try:
# 创建一个配置文件对象
cf = ConfigParser()
# 打开配置文件
cf.read(file_name)
# 获取配置文件中的统计频率
interval = cf.getint('time', 'interval')
# 获取配置文件中要监控的 dbs 和 collection
dbs_and_collections = ast.literal_eval(cf.get('db', 'db_collection_dict'))
return interval, dbs_and_collections

except:
print(traceback.print_exc())
return None

# 从 MongoDB 获取数据,并写入 InfluxDB
def insert_data(dbs_and_collections):

# 连接 MongoDB 数据库
mongodb_client = pymongo.MongoClient(host='127.0.0.1',port=27017) # 直接使用默认地址端口连接 MongoDB

for db_name, collection_name in dbs_and_collections.items():

# 数据库操作,创建 collection 集合对象
db = mongodb_client[db_name]
collection = db[collection_name]

# 获取 collection 集合大小
collection_size = round(float(db.command("collstats", collection_name).get('size')) / 1024 / 1024, 2)

# 获取 collection 集合内数据条数
current_count = collection.count()

# 初始化数据条数,当程序刚执行时,条数初始量就设置为第一次执行时获取的数据
init_count = _count_dict.get(collection_name, current_count)
# 初始化数据大小,当程序刚执行时,大小初始量就设置为第一次执行时获取的数据大小
init_size = _size_dict.get(collection_name, collection_size)

# 得到数据条数增长量
increase_amount = current_count - init_count
# 得到数据大小增长量
increase_collection_size = collection_size - init_size
发布于2019-12-11

回复列表

  • 内容加载中...

说点什么...

三哥✨?? [3级]

来试着运行一下
发布于2019-12-11

回复列表

  • 内容加载中...

说点什么...

三哥✨?? [3级]

python3 influx_monitor
发布于2019-12-11

回复列表

  • 内容加载中...

说点什么...

三哥✨?? [3级]

运行,得到下图内容,表示监控脚本运行成功。
发布于2019-12-11

回复列表

  • 内容加载中...

说点什么...
登录注册 后才可进行评论
签到
42人签到
已签0天
  • 46634帖子
  • 1936811热点量
  • 184983火热值