爬虫学习
走遍星空的CG
pythoner 小白
展开
-
VideoDownload
最近看了一些视频下载相关的项目,如you-get等, 小有所得。希望大家可以多交流学习,给出一定建议。项目地址如下:https://github.com/CGpythoner/VideoDownload原创 2022-01-07 10:57:36 · 1291 阅读 · 0 评论 -
app
新闻类app参数整理:appname params cases update_date ChinaNews sign B3A57C67822CD428A1483FAEFA59E862 2021年1月28日 ChinaNews token eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHQiOiIxNjExODI4Mzc5MDAyIiwiY191c2VyX2lkIjoiIn0.BGlgXsBooOm9SUI-i.原创 2021-01-28 17:38:00 · 286 阅读 · 0 评论 -
国产加密算法:SM4 python3版本
# -*- coding:utf-8 -*-from gmssl.sm4 import CryptSM4, SM4_ENCRYPT, SM4_DECRYPTimport binasciifrom heapq import heappush, heappopfrom collections import OrderedDictimport timeimport requestsclass MY_SM4: ''' 国密sm4加解密 ''' def __i.转载 2020-11-02 17:31:50 · 3299 阅读 · 7 评论 -
Youtube 评论数
youtube评论数单独走评论接口,无法从静态页面中直接获取。使用selenium获取非常耗时好资源。1. 经过分析评论数中请求中的许多参数都在youtube的静态页面中,只需要将其匹配出来就可以了。具体匹配如下: def get_comment(self, data_page): ''' 请求参数: # itemSectionRenderer : ctoken / continuation # XSRF_TOKEN : ses原创 2020-10-13 15:16:54 · 982 阅读 · 0 评论 -
scrapy_redis 中间件 实现参数加密
spider.py# -*- coding: utf-8 -*-import scrapyimport reimport hashlibimport jsonfrom urllib import parsefrom renminribao.items import RenminribaoItemfrom scrapy_redis.spiders import RedisCrawlSpiderclass RenminribaoSpiderSpider(RedisCrawlSpider原创 2020-09-08 18:20:56 · 285 阅读 · 0 评论 -
正则整理
# 正则IP地址匹配pattern = re.compile("(1\d{2}|2[0-4]\d|25[0-5]|\d{2})\.(1\d{2}|2[0-4]\d|25[0-5]|\d{2})\.(1\d{2}|2[0-4]\d|25[0-5]|\d{2})\.(1\d{2}|2[0-4]\d|25[0-5]|\d{2})")# 正则电话号码匹配pattern = re.compile("1[3-8]\d{9}")# 正则匹配日期:s = '2020-9-4'pattern = re.co.原创 2020-09-04 14:49:03 · 122 阅读 · 0 评论 -
**反编译整理**
1. 反编译工具 1.1 Apktool 获取apk中的反汇编代码及资源文件 反编译apk 文件的命令为: apktool d[ecode] [OPTS] <file.apk> [<dir>] 编译apk文件的命令为: apktool b[uild] [OPTS] [<app_path>] [<out_file>] 1.2 enjaify / dex2jar(不推荐 长时间没..原创 2020-07-15 11:42:09 · 547 阅读 · 0 评论 -
docker mitmproxy整理
docker mitmproxy 安装: docker pull mitmproxy/mitmproxy docker 运行mitmproxy 容器命令: 启动mitmproxy 并将证书路径挂在到容器中: docker run --rm -it -v ~/.mitmproxy:/home/mitmproxy/.mitmproxy -p 8080:8080 mitmproxy/mitmproxy 启动mitmdump docker run.原创 2020-06-28 10:33:25 · 1492 阅读 · 2 评论 -
使用 scrollTop 判断是否下滑到底 出错原因(scrollTop 获取到的数据是小数)
近日有一个寻求需要判断是否已经下滑到底代码如下:is_next_flag = 1;var inner_scroll= document.getElementsByClassName("ReactVirtualized__Grid _1zmk")[0];var ele = document.getElementsByClassName("ReactVirtualized__Grid _...原创 2020-02-27 14:14:48 · 3118 阅读 · 2 评论 -
selenium 去掉 webdriver 属性方法
针对selenium的webdriver 属性, 去除webdriver属性如下:self.driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", { "source": """ Object.definePrope...原创 2020-02-26 10:02:39 · 1998 阅读 · 4 评论 -
控制元素滑入可视区域
selenium 控制元素滑入可视区域:js = 'arguments[0].scrollIntoView()' # 默认是ture 页面发送滚动,使element的顶部与视图(容器)顶部对齐 js = 'arguments[0].scrollIntoView(false)' # 使element的底部与视图(容器)底部对齐move_element = self.driver.fin...原创 2020-02-19 17:49:57 · 535 阅读 · 0 评论 -
python3 selenium Chromedriver 添加cookies
很多网站需要先模拟登录然后才能获取到数据,爬取数据是不能每次都登录一遍,通常情况下网站对于登录接口会有检测,也会限制频率,当到达一定频率以后就会出现验证码,或者第二登录页(第二种登录页面(元素定位发生改变)的情况。通常的做法是指定一个周期进行登录,并将登录后的cookie进行保存,获取数据时,将cookie加入到请求中。下面是为chromedriver添加cookie的常用做法: ...原创 2019-12-23 14:13:32 · 2990 阅读 · 0 评论 -
Mitmproxy 配置二级代理
做爬虫时常遇到需要切换代理的情况,mitmproxy 对python有很好的支持,可以通过python脚本自定义二级代理的代理方式。第一步 命令行启用upstream模式注: 只有在一开始启动了upstream 模式, 后续才可以进行定制化跳转mitmdump --mode upstream:http://defaule-upstream-proxy.local:8080/ -s ....转载 2019-12-23 10:06:50 · 3189 阅读 · 0 评论 -
python requests 爬取链家二手房 存入mysql
import requestsimport reimport csvimport timeimport warningsimport pymysqlclass LianjiaSpider: def __init__(self): self.baseurl = 'https://bj.lianjia.com/ershoufang/pg/' ...原创 2018-11-27 19:54:46 · 1012 阅读 · 0 评论 -
对于页面加载完成状态的检测的理解
问题:在进行源码下载任务时经常遇到页面由于异步加载,导致页面加载不完全的问题 方法总结: 1: ReadyState属性,一般情况下当ReadyState变成READYSTATE_COMPLETE 时 webbrowser控件会触发Document时间来指示页面加载完毕。但是当网页包含多个frame时,会多次触发这个事件。 注:不是每个f...原创 2019-08-12 11:47:38 · 628 阅读 · 0 评论 -
chromedriver 允许flash运行
1: 原始(不成功)chromeOpitons = Options() prefs= { "profile.managed_default_content_settings.images":1, "profile.content_settings.plugin_whitelist.adobe-flash-player":1, "profile.content_s...原创 2019-08-16 09:40:41 · 1117 阅读 · 0 评论 -
selenium 记录 performance日志
做爬虫的时候,有时候遇到需要的数据在加载资源当中,通常做法是拼接url,然后获取数据,但首先需要进行分析,如果拼接中的参数有加密的情况时,如果不能模拟算法生成正确的参数,那就很头疼。而访问performance,可以获得加载网站时的资源请求信息,可以通过这一特点,获取url和数据。import timefrom selenium import webdriverfrom seleniu...原创 2019-09-05 09:10:02 · 7592 阅读 · 7 评论 -
Genymotion 各对应版本
安卓版本 代号 Genymotion-ARM-Translation GApps8.0 – 8.1 Oreo奥利奥 ARM_Translation_Oreo.zip 7.0 – 7.1.2 Nougat牛轧糖 6.0 – 6.0.1 Marshmallow棉花糖 ARM_Translation_Marshmallow.zip...转载 2019-09-19 09:28:30 · 1694 阅读 · 0 评论 -
chromedriver(selenium)以手机模拟器方式打开wap页面
直接指定UserAgent 错误!# self.options.add_argument('user-agent="Mozilla/5.0 (Linux; U; Android 8.1.0; zh-cn; BLA-AL00 Build/HUAWEIBLA-AL00) 正确方式:mobile_emulation = {"deviceMetrics": {"width": 360...转载 2019-09-23 11:51:13 · 1763 阅读 · 0 评论 -
将js模块 自动融合为一个js文件 工具: Browserify
https://www.jianshu.com/p/8d8b8752d8a0原创 2019-10-11 18:15:26 · 259 阅读 · 0 评论 -
头条网站selenium 无法模拟下滑
经过上次对与头条进行分析过后,发现_signature的规律不唯一,此研究的目的是为了找到问题的根本。现将分析步骤总结如下:当使用webdriver 执行js脚本,模拟下滑操作时, “$_cdc....”in document 为True 经过几次运算后使用 k[5] = 4 正常应该为0 _signature[22]开始生成前会进行以下运算 首先会将k[5]取出,然后进...原创 2019-08-12 10:23:36 · 689 阅读 · 0 评论 -
爬虫遇到乱码问题!
实例: 转换编码if font_family is not None: # 仅限网易 font_family = bytes(font_family,encoding='gb18030').decode('utf-8','ignore')’原创 2019-07-19 17:33:32 · 291 阅读 · 0 评论 -
爬虫学习笔记day05
1.json模块 1. javascript 中的对象和数组 对象:{'key':'value'} 数组:[x1,x2,x3] 2. 作用 json格式字符串 和 python数据类型之间的转换 3. 常用的一些方法 1. json.loads(): json格式--> Python数据类型 ...原创 2019-05-15 10:49:08 · 251 阅读 · 0 评论 -
爬虫学习笔记day08
3.scrapy模块方法 yield scrapy.Request(url,callback=解析方法名)==================================================Day08笔记1.如何同时开启多个项目管道文件 在piplines.py中所有管道classzhong ,设置函数 porcess_item(self,item.spide...原创 2019-05-19 16:32:59 · 266 阅读 · 0 评论 -
爬虫学习笔记day07
Day回顾1. 多线程爬虫 1. 多进程:大量密集并计算 2.多线程:I/O密集操作(网络I/O,本地磁盘I/0)2. 多线程爬虫 1. url 队列: put(url) 2. RES 队列: 从URL队列中get()发动请求,put(html) 3. 创建多个解析队列,发请求,获取html源码 4. 创建多个解析线程,解析html2. Bea...原创 2019-05-19 16:29:28 · 219 阅读 · 0 评论 -
爬虫学习笔记day06
Day05回顾1、json模块 1、json.loads() json格式(对象、数组) -> Python格式(字典、列表) 2、json.dumps() Python格式(字典、列表、元组) -> json格式(对象、数组)2、Ajax动态加载 1、F12 -> Query String Data 2、params={QueryString...原创 2019-05-19 16:28:11 · 328 阅读 · 0 评论 -
python urllib 爬取猫眼电影top100 存入mongoDB
import urllib.requestimport csvimport reimport pymongoclass MaoyanSpider: def __init__(self): self.headers = {"User-Agent":"Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKi...原创 2018-11-27 19:47:10 · 397 阅读 · 0 评论 -
python urllib post请求 模拟请求有道词典
# -*- coding: utf-8 -*-"""Created on Thu Nov 22 17:15:17 2018@author: python"""import urllib.requestimport urllib.parseimport json# 接收用户输入,对data 进行转码(字节流)key=input('请输入要翻译的内容:')#1. 把Form表...原创 2018-11-27 19:39:12 · 324 阅读 · 0 评论 -
爬虫学习笔记day04
Day04笔记1. Xpath工具(解析) 1. xpath 在XML文档中查找信息的语言,同样适用于HTML文档检索 2. xpath辅助工具 1. chrome插件 :xpath-helper 1. 打开/关闭 :ctrl+shift+x 2. Firefox插件: Xpath checker ...原创 2018-11-27 19:27:35 · 219 阅读 · 0 评论 -
爬虫学习笔记day03
Day03笔记 1. Cookie模拟登录 1. 什么是cookie、session HTTP协议是一种无连接协议,客户端和服务器狡猾仅仅限于 请求/响应过程,结束后断开,服务器会认为是一个新的客户端,为了维护他们 之间的连接,必须在一个地方保存客户端信息 cookie: 通过在客户端记录的信...原创 2018-11-27 19:26:44 · 206 阅读 · 0 评论 -
爬虫学习笔记day02
Day02笔记1、解析模块 1、数据的分类 1、结构化数据 特点:有固定的格式,如:HTML、XML 2、非结构化数据 示例:图片、音频、视频,这类数据以二进制方式存储 2、正则表达式 re 1、使用流程 1、创建编译对象 :p = re.compile('正则表达式') 2、对字符串进行匹配 :r = p.matc...原创 2018-11-27 19:25:55 · 240 阅读 · 0 评论 -
登录豆瓣网站Chrome-无界面模式
# -*- coding: utf-8 -*-"""Created on Wed Nov 28 15:58:18 2018@author: python"""# -*- coding: utf-8 -*-"""Created on Wed Nov 28 14:49:18 2018@author: python"""# 导入模块from selenium import ...原创 2019-05-27 18:26:38 · 392 阅读 · 0 评论 -
爬取京东商品(js)
from selenium import webdriverimport csvimport time# 1. 接收要搜索的商品类型,打开商品搜索页面pro = input("请输入商品名称:")driver = webdriver.Chrome()driver.get("https://www.jd.com/")# 发送文字到搜索框,点击搜索按钮driver.find_el...原创 2019-05-27 18:31:54 · 661 阅读 · 0 评论 -
图片验证码解决方法
使用PIL标注图片库# python图片标准库from PIL import Imageimport pytesseract# 创建图片对象image = Image.open("test3.jpg")# 图片转为字符串s = pytesseract.image_to_string(image)print(s)解决验证码问题基本思路与方法# -*- coding...原创 2019-05-27 18:37:54 · 726 阅读 · 0 评论 -
A parser-blocking, cross site (i.e. different eTLD+1) script, https://c.cnzz.com/core.php?web_id=125
很多站长会遇到一个问题,网站加入CNZZ的JS统计代码后,Chrome浏览器出现警告:阻止跨站解析器阻断脚本通过document.write调用(A parser-blocking, cross site script,XXXX.js is invoked via document.write.)。该警告有时候可能会使HTTPS页面出现不安全因素,甚至让使用EV SSL证书的网站出现不显示绿色地址...转载 2019-07-05 13:59:20 · 9819 阅读 · 1 评论 -
selenium反爬问题(1)
网址:https://www.nst.com.my/actionlinepython3 + selenium + mitmdump页面分析:直有两个文件:(原谅我一直在外部的js中找了好久)后来发现反爬的js代码在html中!!!!(而且显而易见)这是什么鬼!!!感觉像cpu型号诶,正常人谁会看这个!!!这种情况最好的办法是设置断点,便可以查看变量原有的值,(特别注...原创 2019-06-25 17:10:32 · 3619 阅读 · 2 评论 -
selenium启动Chrome配置参数问题
selenium启动Chrome配置参数问题每次当selenium启动chrome浏览器的时候,chrome浏览器很干净,没有插件、没有收藏、没有历史记录,这是因为selenium在启动chrome时为了保证最快的运行效率,启动了一个裸浏览器,这就是为什么需要配置参数的原因,但是有些时候我们需要的不仅是一个裸浏览器。selenium启动配置参数接收是ChromeOptions类,创建...转载 2019-06-21 15:49:07 · 1981 阅读 · 0 评论 -
网站常用检测selenium的发法
多数网站通用的检测selenium的方法。 !function(n) { function i() { return "$cdc_asdjflasutopfhvcZLmcfl_"in u || f.webdriver }解决办法: self.options = webdriver.ChromeOptions()...原创 2019-06-21 13:57:21 · 1280 阅读 · 1 评论 -
selenium 与 普通浏览器的一些差别
selenium在运行的时候会暴露出一些预定义的Javascript变量(特征字符串),例如"window.navigator.webdriver",在非selenium环境下其值为undefined,而在selenium环境下,其值为true包括以下属性:webdriver __driver_evaluate __webdriver_evaluate __selenium_eval...转载 2019-06-21 13:53:14 · 1974 阅读 · 0 评论 -
无头浏览器和浏览器在现实html上的区别
看浏览器处理过程中的每一个步骤:1.处理HTML脚本,生成DOM树2.处理CSS脚本,生成CSSOM树 (DOM和CSSOM是独立的数据结构)3.将DOM树和CSSOM树合并为渲染树4.对渲染树中的内容进行布局,计算每个节点的几何外观5.将渲染树中的每个节点绘制到屏幕中Headless Browser实际就是节约了第4,5步的时间。转载自:https://www.j...转载 2019-06-20 14:56:58 · 537 阅读 · 0 评论