python爬虫学习
记录自己学习的爬虫知识
菜鸡儿齐
这个作者很懒,什么都没留下…
展开
-
Mongodb的索引操作
1. 为什么mongodb需要创建索引加快查询速度进行数据的去重2. mongodb创建简单的索引方法语法:db.集合名.ensureIndex({属性:1})。1表示升序,-1表示降序3. 创建索引前后查询速度对比插入数据:for(i = 0;i<1000000;i++){db.ti.insert({name:"name_"+i,age:i})}创建索引前:db.ti.find({name:"test10000"})db.ti.find({name:"test10000"原创 2020-08-12 21:19:07 · 159 阅读 · 0 评论 -
mongodb的聚合操作
1. mongodb的聚合是什么聚合是基于数据处理的聚合管道,每个文档通过一个由多个阶段组成的管道,可以对每个阶段的管道进行分组,过滤等功能,然后经过一系列的处理,输出响应的结果。语法:db.集合名.aggregate({管道:{表达式}})2. mongodb的常用管道和表达式2.1 常用管道命令在mongodb中,问道处理完毕,用过管道进行下一次处理,常用管道命令如下$group:将集合中的文档分组,可用于统计结果$match:过滤数据,只输出符合条件的文档$project:修改输入文原创 2020-08-09 16:43:59 · 294 阅读 · 0 评论 -
Mongodb增删改查
1.mongodb插入数据db.集合名.insert(document)db.stu.insert({“name”:“小明”,“age”:18})db.stu.insert({_id:“20180101”,“name”:“小明”,age:18})插入文档时,如果不指定_id参数,MongoDB会为文档自动指定一个唯一的Objectid2.mongodb的保存命令:db.集合名.save(document)db.stu.save({_id:20170101,name:“小红”,age:2原创 2020-08-07 15:23:14 · 418 阅读 · 0 评论 -
mongodb简单使用
1.mongodb数据库的命令查看当前的数据库:db查看所有的数据库:show dbs切换数据库:use db_name删除当前的数据库:db.dropDatabase()2.mongodb集合的命令无需手动创建集合:向不存在的集合中第一次添加数据时,集合会自动被创建出来手动创建集合:db.createCollection(name,options)db.createCollection(“stu”)db.createCollection(“stu”,{capped:true原创 2020-08-06 14:42:58 · 99 阅读 · 0 评论 -
mongodb的介绍和安装
1.mongodb的介绍1.1 什么是mongodbmongodb是一个功能最丰富的NoSQL非关系数据库,由c++语言编写mongodb本身提供S段存储数据,即serever;也提供C端操作处理(如查询等)数据,即client1.2 SQL和NoSQL的主要区别在SQL中层级关系:数据库>表>数据在NoSQL中则是:数据库>集合>文档1.2.1数据之间无关联性SQL中如过需要增加外部管理数据的话,规范化做法是在原表中增加一个外键,关联外部数据表。NoSQL则原创 2020-08-05 22:23:31 · 108 阅读 · 0 评论 -
js2py的使用
1.js2py介绍js2py是一个js的翻译工具,也是一个通过纯python实现的js解释器2.具体实现定位进行登录js代码import requestsimport js2py#创建js执行环境context = js2py.EvalJs()#加载js文件headers = {'User-Agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Ge原创 2020-08-04 13:26:18 · 2019 阅读 · 0 评论 -
Js解析,定位js的方法
定位js文件通过initiator定位到js文件通过search搜索关键字定位到js文件通过元素绑定的事件监听函数找到js原创 2020-08-04 11:44:41 · 499 阅读 · 0 评论 -
基于爬虫行为进行反爬
1. 基于请求频率或总请求数量通过请求ip/账号单位时间内请求总量进行反爬通过统一ip/账号请求之间的间隔进行反爬通过对请求ip/账号每天请求次数设置阈值进行反爬2. 根据爬虫行为进行反爬,通常在爬取步骤上做分析通过js实现跳转来进行反爬通过蜜罐(陷阱)获取爬虫ip(或者代理ip),进行反爬通过假数据进行反爬阻塞任务队列运维平台综合审计...原创 2020-07-30 14:09:45 · 207 阅读 · 0 评论 -
基于身份识别的反爬
1. 通过headers字段来反爬1.1 通过headers中的user-agent字段来反爬反爬原理:爬虫默认情况下没有user-agent,而是使用模块默认设置解决办法:请求签添加user-agent即可,或者使用user-agent池来解决1.2 通过referer字段或者其他字段来反爬反爬原理:爬虫默认情况下不会带上referer字段,服务器端通过判断请求发起的源头,以此判断请求是否合法解决办法:添加referer字段1.3 通过cookies字段反爬反爬原理:通过检查cookie原创 2020-07-29 15:12:54 · 186 阅读 · 0 评论 -
selenium其他方法使用
1. 页面等待1.1 页面等待分类强制等待time.sleep()隐式等待指定时间内定位元素,在一段时间内定位成功,就进行下一步。如果没有定位成功就会报超时加载from selenium import webdriverurl = 'https://www.baidu.com'driver = webdriver.Chrome()driver.implicitly_wait(10)driver.get(url)el = driver.find_element_by_xpa原创 2020-07-27 17:35:28 · 1089 阅读 · 0 评论 -
selenium控制浏览器执行js代码
selenium执行jsx水平移动,y垂直移动driver.execute_script('scrollTo(x,y)')原创 2020-07-26 16:48:45 · 421 阅读 · 0 评论 -
selenium_cookies操作
#获取当前标签页的全部cookies信息print(driver.get_cookies())#把cookies转化为字典cookies_dict = {cookies['name']:cookies['value'] for cookies in driver.get_cookies()}from selenium import webdriverurl = 'https://www.baidu.com'driver = webdriver.Chrome()driver.get(ur原创 2020-07-26 16:21:02 · 126 阅读 · 0 评论 -
常见的反爬手段和解决思路
学习目标了解服务器反爬原因了解服务器反什么样的爬虫了解反爬虫领域常见的一些概念了解反爬的三个方向了解常见基于用户身份识别进行反爬了解常见基于爬虫行为进行反爬了解常见基于数据加密进行反爬1. 服务器反爬原因爬虫占总PV较高,浪费资源资源被批量抓走,丧失竞争力法律的灰色地带2. 服务器反什么样的爬虫十分低级的应届毕业生十分低级的创业小公司不小心写错了没人去停止的失控小爬虫成型的商业对手抽风的搜索引擎3. 反爬虫领域常见的一些概念爬虫:使用任何技术手段,批量获取原创 2020-07-26 16:07:05 · 124 阅读 · 0 评论 -
selenium切换frame框架
iframe是html中常用的一种技术,即一个页面中嵌套了另一个页面,selenium默认是访问不了frame中的内容的,对应的解决办法 driver.switch_to.frame(frame_element)from selenium import webdriverurl = 'https://qzone.qq.com/'driver = webdriver.Chrome()driver.get(url)#切换到frame框架driver.switch_to.frame('login原创 2020-07-25 16:29:14 · 762 阅读 · 0 评论 -
selenium标签页的切换
当selenium控制的浏览器打开多个标签页时,如何控制浏览器在不同的标签页中进行切换呢,分为以下两步:获取所有标签页的句柄利用窗口句柄切换到句柄指向的标签页#1. 获取当前所有的标签页的句柄构成的列表current_windows = driver.window_handles#2. 根据标签页句柄列表索引下标进行切换driver.switch_to_window(current_windows[0])from selenium import webdriverurl = '原创 2020-07-25 16:08:17 · 1642 阅读 · 0 评论 -
selenium提取对象
知识点:了解driver对象的常用属性和方法掌握driver对象定位标签元素获取标签对象方法掌握标签对象提取文本和属性值的方法1.driver对象的常用属性和方法driver.page_source 当前浏览器渲染之后的网页源代码driver.current_url 当前标签页的url地址driver.close() 关闭当前标签页,如果只有一个标签页则关闭整个浏览器driver.quit() 关闭浏览器driver.forward() 页面前进driver.back() 页面后退原创 2020-07-23 21:09:05 · 250 阅读 · 0 评论 -
selenium简单使用
1.创建对象driver = webdriver.XXX()2.发送请求driver.get(url)import timefrom selenium import webdriver#初始化driver对象driver = webdriver.Chrome()#控制浏览器访问地址driver.get("https://www.baidu.com")time.sleep(3)#在百度搜索中搜索'python'driver.find_element_by_id('kw').sen原创 2020-07-23 20:50:40 · 74 阅读 · 0 评论 -
数据提取-lxml模块
知识点了解lxml模块和xpath语法的关系了解lxml模块的使用场景了解lxml模块的安装了解 谷歌浏览器xpath helper插件的安装和使用掌握xpath语法-基础节点选择语法掌握xpath语法-节点修饰语法掌握xpath语法-其他常用语法掌握lxml模块中使用xpath语法定位元素提取属性值或文本内容掌握lxml模块中stree.tostring函数的使用1. 了解lxml模块和xpath语法对html或xml形式的文本提取特定内容,需要lxml模块的xpath语法l原创 2020-07-16 15:04:10 · 216 阅读 · 0 评论 -
数据提取-jsonpath模块
知识点了解jsonpath模块的应用场景掌握jsonpath模块的使用jsonpath模块的使用场景在多层嵌套的复杂字典中,根据key和下表来批量提取value。数据提取的方法from jsonpath import jsonpathret = jsonpath(a,'json语法规则字符串')jsonpath语法规则主要有三个$ 根节点. 子节点.. 内部任意位置,子孙节点...原创 2020-07-15 21:26:29 · 195 阅读 · 0 评论 -
数据提取
概述了解 响应内容的分类了解xml和html的区别1. 响应内容的分类结构化json数据(高频)json模块re模块jsonpath模块xml数据(低频)re模块lxml模块非结构化htmlre模块2.xml和html的区别https://www.cnblogs.com/hanfanfan/p/9734048.html...原创 2020-07-15 21:07:32 · 115 阅读 · 0 评论 -
Requests模块
掌握headers参数使用掌握发送带参数的请求掌握headers中携带cookie掌握cookies参数的使用掌握cookiesJar的转换方法掌握超时参数timeout的使用掌握代理ip参数proxies的使用掌握使用verify参数忽略CA证书掌握requests模块发送post请求掌握利用requests.session进行状态保持1.requests模块介绍https://blog.csdn.net/qq_41556318/article/details/86527763.原创 2020-07-08 00:19:38 · 269 阅读 · 0 评论 -
http协议简单学习
掌握http以及https的概念和默认端口掌握 爬虫关注的请求头和响应头了解常见的响应状态码理解浏览器和爬虫爬取的区别1. http以及https的概念和区别http:超文本传输协议,默认端口号是80超文本:指不限于文本,还包括图片,视频和音频等文件传输协议:使用约定的固定格式来传输转换成字符串的超文本内容https:HTTP+SSL(安全套接字层),即带有安全套接字的超文本传输协议,默认端口号:443SSL对于传输的内容进行加密2. 爬虫特别关注的请求头和响应头(*为常用.原创 2020-07-05 21:31:56 · 140 阅读 · 0 评论