爬虫(数据存储)
Robots协议
Robots协议(Robots Exclusion Protocol):称作爬虫协议、机器人协议,全称是网络爬虫排除标准(Robots Exclusion Protocol),用来告诉爬虫和搜索引擎可以抓取哪些页面。它通常是一个叫做robots.txt文件。
核心功能:
访问控制:屏蔽敏感目录(如后台/admin/、用户数据/user/)
资源优化:禁止抓取大文件(如图片、视频),节省服务器带宽
SEO效率:引导爬虫抓取高价值内容,避免索引低质页面(如死链、重复页)
robots.txt文件要求:
robots.txt文件必须放置在站点的根目录下(名字小写);
文件中的记录通常以一行或多行User-agent(用于描述受限制的robot的名字)开始,后面加上Disallow(用于描述不希望被访问到的URL)行。
当搜索爬虫访问一个站点时
1.检测站点根目录下是否存在robots.txt文件;
2.若robots.txt文件存在,爬虫会依据定义的爬取范围来爬取;
3.若robots.txt文件不存在,爬虫会访问所有可直接访问的页面。
基础指令规则
User-agent:指定目标爬虫(*表示所有引擎)
Disallow:禁止抓取的路径(如Disallow: /private/)。
Allow:允许抓取的路径(常与Disallow配合使用,如Allow: /public/)
高级参数:
Sitemap:提交网站地图加速收录(如Sitemap: https://example.com/sitemap.xml)
Crawl-delay:设置爬虫请求间隔(如Crawl-delay: 10)
通配符应用:
*匹配任意字符(如Disallow: /*?*屏蔽动态URL)。
$匹配路径结尾(如Allow: /.htm$仅允许抓取.htm页面
示例

上面*代表没有权限所有人都可以Disallow代表这一类型的网站都不可爬取
查看robots协议:
进入https://ziyuan.baidu.com/robots/index 输入要查的网址
一些常见的搜索爬虫的名称与对应的网站:
|
爬虫名称 |
名称 |
网站 |
|
BaiduSpider |
百度 |
www.baidu.com |
|
Googlebot |
谷歌 |
www.google.com |
|
360Spider |
360搜索 |
www.so.com |
|
YodaoBot |
有道 |
www.youdao.com |
|
ia_archiver |
Alexa |
www.alexa.cn |
|
Scooter |
altavista |
www.altavista.com |
txt文本存储
采集网页数据后,需要存储数据。可以直接保存为文本文件,还可以保存到数据库。
常见的文件存储形式:TXT文本存储; JSON文件存储; CSV文件存储; Office文件存储;
TXT文件存储优点: 操作简单; TXT文本几乎兼容任何平台。
TXT文件存储缺点: 数据检索不方便。
在Python中,操作文件需要先创建或者打开指定的文件并创建File对象,通过内置的open()函数实现 file = open (filename,mode,buffering)
filename:要创建或打开文件的文件名称;mode:默认打开模式为只读(r);buffering:用于指定读写文件的缓冲模式,值为0表示不缓冲,值为1表示缓冲,大于1 代表缓存区大小。
mode参数的参数值说明:

r表示只读r+读加写;w为只写w+读加写;a写入(追加)。
文件路径的常用形式有如下3种:
with open("d:\\yongzhou\\title.txt","a+") as f:
with open(r"d:\yongzhou\title.txt","a+") as f:
with open("d:/yongzhou/title.txt","a+") as f: 有时需要把几个变量写入txt文件中,这时分隔符就比较重要了。可以采用Tab进行分隔,用"\t".join()将变量连接成一个字符串。
csv文件存储
CSV,全称为 Comma-Separaed Values ,即逗号分隔值或字符分隔值,其文件以纯文本形式存储表格数据。该文件是一个字符序列,可以由任意数目的记录组成。
字段间的分隔符是其他字符或字符串,最常见的是逗号或制表符。 所有记录都有完全相同的字段序列 ,相当于一个结构化表的纯文本形式。
csv文件读取与写入
|
函数 |
说明 |
|
csv.reader() |
读取CSV文件 |
|
csv.writer() |
将数据写入CSV文件 |
|
csv.register_dialect() |
将dialect与name联系起来 |
|
csv.unregister_dialect() |
从dialect注册表中删除与名称关联的dialect |
|
csv.get_dialect |
返回与name相关的dialect |
|
csv.list_dialects() |
返回所有已注册dialect的名称 |
|
csv.field_size_limit() |
返回解析器允许的当前最大字段大小 |
csv.reader()函数:
csv.reader(csvfile,dialect ='excel',** fmtparams)
参数解释如下:
csvfile:CSV文件;dialect:编码风格,默认为excel的风格,也就是用逗号(,)分隔,dialect方式也支持自定义,通过调用register_dialect方法来注册; fmtparam:格式化参数,用来覆盖之前dialect对象指定的编码风格。
应用
使用csv.reader()函数读取数据
import csv#导入
with open('./iris.csv','r') as csvfile:#读取文件目录下的csv文件命名为csvfile
read = csv.reader(csvfile)
for row in read:
print(row)
读取结果这是读取的是鸢尾花数据集

使用csv.writer()函数具体语法如下:
import csv#导入
with open('data.csv','w') as csvfile:#打开datacsv文件并写入
writer=csv.writer(csvfile)#作者写入
writer.writerow(["id","name","age"])#若不想重复写writer.writerow可直接写writer.writerows
writer.writerow(["10001","guo","20"])
writer.writerow(["10002", "andy", "22"])
writer.writerow(["10003", "feng", "25"])

使用csv.writer()函数创建字典具体语法如下:
import pandas#导入
result_dict={"sNo":["179001","179002"],#创建字典
"sName":["周勇","杨倩"],
"sex":["男","女"]
}
path = "./teacher.csv"#保存路径
df=pandas.DataFrame(result_dict)
df.to_csv(path)

将数据存储为Excel文件
import pandas
result_dict={"sNo":["179001","179002"],
"sName":["周勇","杨倩"],
"sex":["男","女"]
}
path = "./teacher.xlsx" #存储为.xlsx
df=pandas.DataFrame(result_dict)
df.to_excel(path)

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)