未加星标

python 爬虫开发从入门到实践 读书笔记(二)

字体大小 | |
[开发(python) 所属分类 开发(python) | 发布者 店小二03 | 时间 2018 | 作者 红领巾 ] 0人收藏点击收藏
PyMongo pip instal pymongo pymongo 使用 from pymongo import MongoClient client = MongoClient() # 默认本机什么都不用添加 client = MongoClient('mongodb://@IP:PORT') client = MongoClient('mongodb://用户名:密码@IP:PORT') 初始化数据与集合

方法一

from pymongo import MongoClient client = MongoClient() database = client.db1 # 库 collection = db1.spider # 集合

方法二

from pymongo import MongoClient client = MongoClient() database = client['db1'] collection = database['spider']

方法三

databast_name_list = ['db1','db2','db3'] for each_db in database_name_list: database = client[each_db] collection = database.test 插入数据 from pymongo import MongoClient client = MongoClient() database = client['db1'] collection = database['spider'] data = {'id':'123', 'name':'username01','age':20} collection.insert(data) more_data = [{数据1},{数据2}] # 插入多个数据 collection.insert(more_data) 普通查找 find(查询语句,返回字段) find_one(查询语句,返回字段) content = collection.find() # 不加参数, 显示所有 content = collection.find({'age':20}) content = collection.find({'age':20}, {'_id':0, 'username':1,'age':1}) # 第二个参数指定返回的内容. 这个参数是个字典, key 是字段名称, value是0或1, 0表示不返回这个字段, 1表示返回的字段. 其中_id 比较特殊, 必须人工知道你个值为0, 这样才不会返回. 对于其他数据,应该统一使用返回或者不返回 逻辑查询 $gt 大与 $lt 小于 $gte 大于等于 $lte 小于等于 $eq 等于 $ne 不等于 collection.find({'age':{'$gt':20}}) # 查询 age>20的记录 collection.find({'age':{'$gte':20,'$lte':40}}) # 查询20≤age≤40 查询结果排序 collection.find().sort('列名',1或-1) # 1表示升序,-1表示降序 collection.find({'age':{'$gte':20,'$lte':40}}).sort('age',1) 更新记录 collection.update_one(参数1, 参数2) collection.update_many(参数1, 参数2) # 将第一个年龄为20的人, 改名字 collection.update_one({'age':20}, {'$set':{'name':'username01'}}) # 将所有年龄为20的人, 改年龄 collection.update_many({'age':20}, {'$set':{'age':40}}) 删除记录 collection.delete_one(参数) collection.delete_many(参数) collection.delete_one({'age':20}) # 删除一条 collection.delete_many({'age':20}) # 删除所有符合条件的 查询结果去重 collection.distinct(列名) # 查询有多少个不同年龄的人 collection.distinct('aget') 交互环境的使用 keys * lpush 从左侧写数据到列表中 lpop 从左侧读取数据 rpush rpop llen 查看列表的长度 lrange key start end # lrange test 0 3 读取下标 0-1-2-3 四个 lpush key value1 value2 ...

eg:

127.0.0.1:6379> lpush c6 "url" (integer) 1 127.0.0.1:6379> lpush test "hello" "world" (integer) 2 127.0.0.1:6379> lpop test "world"

python 一样, 没有顺序, 值不重复

sadd key value1 value2 value3 ... 127.0.0.1:6379> sadd test_set "https://baidu.com" (integer) 1 127.0.0.1:6379> sadd test_set 1 2 3 4 5 6 7 7 7 7 (integer) 7 # spop key count 127.0.0.1:6379> spop test_set # 省略 count , 读一个 "4" 127.0.0.1:6379> spop test_set 4 # 4代表读多少个值 1) "3" 2) "6" 3) "2" 4) "https://baidu.com" redis-py pip install redis import redis client = redis.StrictRedis() client = redis.StrictRedis(host='192.168.1.100', port=6379, password='123456') client.lpush('c6', 123) # 列表左侧添加一个数字 client.llen('c6') # 长度 value = client.lpop('c6') # 从列表右侧读一个值 client.sadd('test_set', 'www.baidu.com') # 集合里添加一个网址 url = client.spop('test_set') # 读一个值 length=client.scard('test_set') # 集合的长度 import json json_str = json.dumps(dict, indent=4) # dict -> json, 或 包含字典的列表 -> json json_dict = json.loads(str) # json -> dict selenium from selenium import webdriver from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC driver = webdriver.Chrome('chromedriver') url = "https://www.baidu.com" driver.get(url) try: # WebDriverWait(driver, # 30).until(EC.presence_of_element_located((By.CLASS_NAME,"site-description"))) # WebDriverWait(driver, 30).\ # until(EC.presence_of_element_located((By.CLASS_NAME, # "s_btn"))) # By.ID # By.NAME # By.XPATH WebDriverWait(driver, 30).\ #等30s,直到出现 id为 su的元素 until(EC.presence_of_element_located((By.ID, 'su'))) except Exception as e: print("网页太慢", e) html = driver.page_source # 获取源码 element = driver.find_element_by_id("su") element = driver.find_element_by_name("ie") element_list = driver.find_elements_by_id("su") element_list = driver.find_elements_by_name("ie") element = driver.find_element_by_xpath('//input[@id="su"]') element = driver.find_elements_by_xpath('//input[@id="su"]') comment = driver.find_element_by_xpath('//*[@id="qrcode"]/div/div[2]/p/b') print(comment.text) # text 获取文本 driver.quit() # 退出

本文开发(python)相关术语:python基础教程 python多线程 web开发工程师 软件开发工程师 软件开发流程

代码区博客精选文章
分页:12
转载请注明
本文标题:python 爬虫开发从入门到实践 读书笔记(二)
本站链接:https://www.codesec.net/view/611289.html


1.凡CodeSecTeam转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
登录后可拥有收藏文章、关注作者等权限...
技术大类 技术大类 | 开发(python) | 评论(0) | 阅读(74)