栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python爬虫(进阶)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python爬虫(进阶)


3. insert()添加数据

insert可以批量的插入数据列表 也可以插入一台哦数据

3.1 添加一条数据
        返回插入数据的id

ret collection.insert({ name : test10000 , age : 21})
print(ret)

3.2 添加多条数据
        返回Object对象构成的列表

item_list [{ name : test1001{} .format(i)} for i in range(10)]
rets collection.insert(item_list)
print(rets)
for ret in rets:
 print(ret)

4. find_one()查找一条数据
        接收一个字典形式的条件 返回字典形式的整条数据如果条件为空 则返回第一条

ret collection.find_one({ name : test10011 })
print(ret) #包含mongodb的ObjectId对象的字典
_ ret.pop( _id ) #清除mongodb的objectd对象的k , v
print(ret)

5. find()查看全部数据

返回所有满足条件的结果 如果条件为空 则返回全部结果是一个Cursor游标对象 是一个可迭代对象 可以类似读文件的指针 但是只能够进行一次读取

rets collection.find({ name : test10005 })
for ret in rets:
 print(ret)
for ret in rets: #此时rets中没有
 print(ret)

6. updata()更新数据 全文档覆盖或指定键值 更新一条或多条

语法:  collection.update({条件}, { $set :{指定的kv或完整的一条数据}}, multi False/True,upsert False/Truemulti参数:默认为False,表示更新一条; multi True则更新多条; multi参数必须和$set一起使用upsert参数:默认为False; upsert True则先查询是否存在,存在则更新;不存在就插入$set表示指定字段进行更新

6.1 更新一条数据;全文档覆盖;存在就更新,不存在就插入
 

data ( msg : 这是一条完整的数据1 , name : 哈哈 }
collection.update({ haha : heihei } { $set : data} upsert True)

6.2 更新多条数据;全文档覆盖;存在就更新,不存在就插入

data { msg : 这是一条完整的数据2 , name : 哈哈 } #该完整数据是先查询后获取的collection.update({}, { $set :data}, multi True, upsert True)

6.3 更新一条数据;指定键值;存在就更新 不存在就插入

data { msg : 指定只更新msg___1 }
collection.update({},{ $set :data}, upsert True)

6.4更新多条数据;指定键值;存在就更新 不存在就插入入

data { msg : 指定只更新msg_2 }
collection.update({}, { $set :data}, multi True,upsert True)

7. delete_one()删除一条数据

collection.delete_one({ name : test10001 })

7.1 delete_many()删除全部数据

collection.delete_many({ name : test10810 })

8 pymongo模块其他api

查看pymongo官方文档或源代码 http://api.mongodb.com/python/current/ 二、scrapy-爬虫框架

scrapy官方文档

中文版 Scrapy 2.5 documentation — Scrapy 2.5.0 文档 (osgeo.cn)源文档 Scrapy 2.5 documentation — Scrapy 2.5.0 documentation 1.学前应知 1 scrap的概念和流程

1. 概念  

Scrapy是一个python编写的开源网络爬虫框架 它是一个被设计用于爬取网络数据 提取结构性数据的框架----- 少量的代码就能够快速的抓取

2. 工作流程

 其流程描述如下

爬虫中起始的url构造成request对象-- 爬虫中间件-- 引擎-- 调度器调度器把request-- 引擎-- 下载中间件--- 下载器下载器发送请求 获取response响应---- 下载中间件---- 引擎--- 爬虫中间件--- 爬虫爬虫提取url地址 组装成request对象---- 爬虫中间件--- 引擎--- 调度器 重复步骤2爬虫提取数据--- 引擎--- 管道处理和保存数据 2 scrapy的三个内置对象 requests请求对象 由url、method、post_data、headers等构成response响应对象 由url、body、status、headers等构成item数据对象 本质是一个字典 3 scrapy中的模块的具体作用

爬虫中间件和下载中间件只是运行逻辑的位置不同 作用是重复的:如替换UA等 4 安装与项目开发流程介绍

1. 安装

pip/pip3 install scrapy

2. 开发流程

1. 创建项目

scrapy startproject mySpider

2. 生成一个爬虫

scrapy genspider itcast itcast.cn

3. 提取数据

根据网站结构在spider中实现数据采集相关内容

4. 保存数据

使用pipeline进行后续处理和保存 2. 项目流程 重点 1 创建项目 以pycharm为例

创建scrapy项目的命令 在pycharm底部的终端中输入该命令

scrapy startproject  项目名字     ---- eg: scrapy startprojet myspider

创建成功有

2 创建爬虫

通过命令创建出爬虫文件 爬虫文件为主要的代码作业文件 通常一个网站的爬取动作都会在爬虫文件中进行编写。
命令 ---- 在项目路径下执行 、

scrapy genspider    爬虫的名字 允许爬取的域名

爬虫的名字 作为爬虫运行时的参数

允许爬取的域名: 为对于爬虫设置的爬取范围 设置之后用于过滤要爬取的url 如果爬取的url与允许的域不通则被过滤掉。

eg

cd myspider          # 要转到项目目录下才行scrapy genspider w3school www.w3school.com.cn

结果如下

 运行爬虫

scrapy crawl w3school                   -- 终端上 3 完善爬取

1. 爬取传智播客的老师

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/267345.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号