- 博客(72)
- 资源 (1)
- 收藏
- 关注
原创 滑块验证3-接第1篇
滑块验证的过程比较常使用driver模拟滑动,这样能够省去很多验证操作。如果设置适合的滑动轨迹,成功率是非常高的。当然,麻烦的是现在很多站点都做了识别driver的反爬,而且比较受网络的影响。
2023-08-22 09:23:36 1329
原创 滑块验证2
滑块图片地址接口获取,两张(滑块图和背景缺口图)验证通过校验为接口校验,需要一个uuid和位移拼接成校验地址uuid能通过接口获取,位移需计算得到。
2023-08-18 10:38:26 186
原创 滑块验证码-接口返回base64数据
滑动验证码在实际爬虫开发过程中会遇到很多,不同网站返回的数据也是千奇百怪。这里分享一种接口返回base64格式的情况以及处理方式。
2023-08-17 11:17:21 865
原创 浏览器设置cookie使用ocalStorage.setItem
最近在开发过程中,遇到一种情况。后台登录获取到了cookie,但是cookie在塞入浏览器的过程中,出现了一些异常,总之就是cookie不匹配,怀疑是cookie中的一些值太大造成的。当然经过测试,找到了一种解决的方法。1、浏览器模拟登录,从最开始的登录页开始模拟,一步步进入站点内,缺点就是比较慢,优点就是发生异常能够直观看到哪一步出现了问题,及时做出调整。python开发过程中,有时候需要执行截图或铺数类的任务,这个时候就需要浏览器操作才能完成,那么执行任务的前提就是浏览器先登录进网站。
2023-08-16 11:48:22 190
原创 headers、cookies处理
headers处理def headers_to_dict(headers): row_headear = headers.split('\n') row_dict = dict() # headers_list = [] for i in row_headear: if i == '': continue row = i.strip().split(':', 1) if len(row) == 0
2021-10-19 11:08:27 308
原创 python---时间计算
import time, datetimefrom dateutil.parser import parsedate1 = '2017-10-01 12:12:12'date2 = '2013-3-4 10:10:10'aa = time.mktime(time.strptime(date1, "%Y-%m-%d %H:%M:%S"))bb = time.mktime(time.strptime(date2, "%Y-%m-%d %H:%M:%S"))print(aa)print(bb).
2021-10-18 16:25:17 197
原创 网页过大,requests如何实现下载
最近爬虫遇到一个问题,被请求的url默认返回4条数据,为了节省请求的次数,修改了其中的参数,从而让它每次请求都可以返回50条数据实际实现的过程中,请求的的次数确实减少了,但是伴随着也出现了一个问题为了排查这个问题,浪费了我很长的时间,以为是程序出现了bug,最后看源码才查出原来是requests默认请求最大返回数据为10M,超过10M数据,数据就会缺失。其实,对于工作中,资源比较充足的公司来说,这个问题是不存在的,但是谁让我公司穷呢!所以为了节省购买IP、服务器等资源,只能从代码层做优化
2021-09-22 16:53:30 435
原创 内置函数zip()
1、将多个可迭代对象组合起来,然后可以用 for 循环依次取出,或者一次性将结果存入列表、元组或者字典之类的容器中。2、for循环可以吧元组内的元素以此取出3、zip()的参数可以是不同类型的可迭代对象4、迭代对象为字典...
2021-09-07 16:46:46 186
原创 pycharm快捷将原生headers转换成字典
爬虫过程中,为了设置headers,往往都会将原生的headers拷贝到py文件中,但是还需要我们手动将对应的每一个键值转换成字符串,并组成字典。如果headers中的键值较少,手动挨个转换还行,但是键值较多的话,就会非常的浪费时间。为了节省时间,查了一下pycharm有没有快捷方式可以直接转换,可惜没有快捷键,但是可以通过其中的替换功能+正则来快速实现这一功能。参考文章:https://blog.csdn.net/weixin_42240407/article/details/83904670
2021-08-18 11:45:30 1057
原创 爬虫---标准时间转换函数
# -*- coding: utf-8 -*-import reimport timedef getTime(timeList): """ timeList: xpath获取到中文时间列表 :param timeList: [] :return: str """ try: timeText = ''.join(timeList).replace('\r\n', '').replace('\n', '') time_h.
2021-07-20 14:36:08 217
原创 python---日志模块
贴一个封装好的日志模块,可以直接放在项目中,日志存放的路径配置一下就可以#!/user/bin/even python# -*- coding:utf-8 -*-import osimport timeimport loggingimport inspectfrom logging.handlers import RotatingFileHandlerfrom sns_spider.config.settings import *dir = LOG_PATH# print(os.
2021-07-08 14:32:40 336 1
原创 User-Agent池
爬虫有些网站,会针对ua做反爬,是一种常见的发票措施,这就要求我们在爬虫的过程中,针对某些网站必须做ua池。ua池创建是比较简单的,直接将ua放在一个指定的管道中,然后可以随机取,也可以轮询取。但是有些网站ua反爬比较严重,所以这就要求我们在创建ua池的时候,将ua池尽可能大的构建,这样能防止我们的爬虫被检测到。构建大的ua池,需要的ua太多了,如果只是百度去搜的话,太麻烦,而且量也不多这里作者找到一个专门提供ua的网站,提供了海量的ua,如果需要的话可以访问该网站。这里直接贴出
2021-07-08 11:43:43 1100 1
原创 爬虫---ins注册脚本
访问这个网站首先要解决qiang的问题,这里就跳过了重点:1、该网站手机号可以重复注册,但是应该有一个预警机制,将失效的账号以邮件的方式发出来2、爬取该网站最好尽量多的备手机号,100往上最好3、如果手动注册最好将浏览器的语言改成英文,中文状态下连续注册会有限制这里上传一个注册脚本,免去了手动注册,但是手机验证码需要手动加入,如果有猫池的话比较好注册成功后会将cookie打印出来,可以保存到文件或redis中,轮询调用# -*- coding: utf-8 -*-impor
2021-06-28 17:49:19 3480 4
原创 爬虫---时间转换模块
实际爬虫项目中,会爬取很多网站,比如上千上万的网站,如何在抓取数据的额过程中如何统一它们的格式是一个很大的问题。这些网站的时间格式千奇百怪,各种语言都有,所以为了方便发多数网站,写了这个日期格式转换的脚本并足以百分百解决全部网站,但是足以解决大多数网站,不足之处,根据项目的需要修改吧全部代码import datetimeimport reimport timeimport loggingfrom dateutil.parser import parsefrom dateutil.
2021-06-22 17:39:26 540
原创 如何忽略urllib3出现的warning问题
最近在爬油管的过程中,出现了个warning的日志问题,发现是urllib3引起的,给项目的日志输出造成了一定的影响。warning的出现是因为分布式高并发造成的,太多的请求同时去访问,造成部分访问没有成功。在解决的过程中,侧重点一直放在网站和requests包上面,一顿猛操作,最后也没有解决。后来才发现方向错了,换了几个搜索引擎,才避免了warning的输出,不过根本的问题还是没有解决。直接上代码import loggingurllib3_logger = logging.getL
2021-06-22 17:20:20 929
原创 python中的string.Template
string.Template多用于特定字符串的置换,对替换文件中的内容比较方便,当然前提是指定关键词打好标记string.Template的替换符号为“$”,和%s类似常用的操作如下from string import Templates='hello,$world!'t=Template(s)data = t.substitute({'world':'世界'})print('hello,世界!'...
2021-04-21 15:58:21 1102
原创 封装一个url拼接函数
在一个爬虫项目中,往往我们要爬取数百上千的网站,这个时候如果每一个爬虫我们都要手动拼接其中的url那就太繁琐了,这样重复大量的工作。所以为了减轻工作压力,写了一个适用于绝大多数网站的url拼接函数,即使有的url拼接错误,也可以将其判断加入函数中,封装成通用模块是减少除服劳动的最好的路径。def deal_url(url, link): addr = "" proctorl = url.split('//')[0] base_url = proctorl + "//" +
2020-11-06 14:26:56 680 1
原创 封装一个常用请求类
公司最近爬虫项目没有使用框架,所以每次建爬虫,都要去写N个请求,还要考虑编码的问题,为此深感麻烦,所以写了一个很low的类,便于复用。直接上代码!!class GetResponse(object): def __init__(self): self.session = requests.Session() self.session.keep_alive = False self.session.mount('http://', HTTPAd
2020-11-05 16:48:59 334 1
原创 多进程,非框架,爬虫运行脚本
实际项目开发过程中,如果不是用框架开发的爬虫项目,而是直接requets编写的一个个爬虫脚本,如果部署到服务器上,采用定时任务挨个去启动它,这样就太繁琐了,需要写很多定时任务。所以说这个时候就需要我们开发人员根据自己写的爬虫,将之分配到不同的启动脚本中。可以根据更新的速度来分配爬虫,从而只需要写很少的定时任务就可以了。我的爬虫脚本是这样写的,很简单实用,唯一的缺点就是代码不太美观!#!/user/bin/even python# -*- coding:utf-8 -*-import
2020-10-17 20:39:29 234
原创 服务器下,给python3创建软连
切换到root用户, 找到python3的安装路径,找到/bin/python3,然后输入ln -s /opt/python3/bin/python3 /bin/python3,# 软连python3环境ln -s /opt/python3/bin/pip3 /bin/pip3 # 软连pip工具
2020-10-17 20:19:08 501
原创 git解决每次拉取代码需要输入用户名密码
前提服务器已安装git执行git config --global credential.helper store,在~/.gitconfig目录下会多出一个文件,这里会记录你的密码和帐号,之后你git push 或者 git pull 再次输入你的账号和密码,下次推送拉取代码就不用了在输入账号密码了,非常方便。...
2020-10-17 20:13:24 3693 1
原创 批量杀死进程端口命令
因为爬虫项目采用的多进程,并且爬虫节点较多,出现bug候我们要修复bug,这个时候就要停掉我们的爬虫项目,但是因为爬虫较多,如果一个一个去杀死进程那就太呆了,这个时候就需要批量杀死我们的爬虫进程!可以采用以下命令批量杀死我们正在运行的爬虫项目,兼职不要太爽。ps aux|grep python3|grep -v grep|cut -c 9-15|xargs kill -15...
2020-10-17 20:08:22 368
原创 服务器安装谷歌浏览器
三行代码,在服务器安装谷歌浏览器wget https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpmyum install -y lsbyum localinstall google-chrome-stable_current_x86_64.rpm注意:安装相应版本的谷歌,修改后面的参数就好...
2020-10-17 19:57:11 2364 1
原创 python项目服务器部署导包错误,解决!
本地开发在pycharm开发代码和服务器部署代码是有稍微不同的。本地我们在建好这个项目的时候,pycharm会自动将项目下的所有路径自动添加到解释器目录下,所以在本地导入各个目录下的文件,是不会出现错误的,但是如果把项目部署到服务器上,就会出现没有这个模块的错误。当出现这个错误的时候,我们就要考虑项目各级包导入的问题了!我们可以在本地开发代码的过程中,每个文件的开头都用sys.argv将需要导入的包的路径添加到解释目录列表中,但是这样比较繁琐,绝大部分的文件都需要添加到解释器中,即使问题解决了,
2020-10-17 19:51:01 908
原创 Pycharm常用快捷键
常用快捷键 Ctrl + / 注释 Ctrl + Y 删除当前行 Ctrl + Alt + L 代码格式化 Ctrl + D 复制选中的区域 Shift + Enter 换行 Ctrl + Shift + - 折叠全部代码块 Ctrl + Shift + + 打开折叠的全部代码块 Ctrl + B 跳转到模块定义位置 Alt + up/down 方法上移或下移 Alt + Shift + up/down 当前行
2020-06-23 15:33:57 270
原创 记录:windows下更新所有包,并输出到requiremets.txt文件中
1、Anaconda集成环境如果安装的是anaconda集成环境,可以使用自带的conda命令conda update --all2、Python原生环境原生环境下查看所有待升级的包的命令,pip list --outdated --format=legacy pip list --outdated --format=columns 这两个任意一个都行,只是输出方式的不同而已。如果安装的是python原生环境,更新所有包之前必须安装pip-review包p
2020-06-23 09:52:03 354
原创 selenum登录网页版有道词典
登录网页版有道词典,需注意它有两个复选框,这里只勾选第一个代码# -*- coding: utf-8 -*-# Time: 2020-06-22# Author: zuojileiimport time, tracebackfrom selenium import webdriverdef login(): """ 登录有道翻译网页版 """ acount_num = input('请输入163邮箱:\n') password_num = i
2020-06-22 17:10:02 900
原创 selenum登录163邮箱
163登录使用selenum登录,唯一需要注意的是需要先切到iframe标签内,才可以获取到form表单直接上代码# -*- coding: utf-8 -*-# Time: 2020-06-22# Author: luoshenimport time, tracebackfrom selenium import webdriverdef login(): """ 登录163邮箱 """ acount_num = input("请输入账号:\n")
2020-06-22 17:04:12 649
原创 爬取豆瓣电影数据
采集豆瓣数据时,最好加上代理,负责被封可不负责直接上代码# -*- coding: utf-8 -*-import requests, json, time, re, csv, randomfrom lxml import etree"""__Author__: luoshen__Date: 2020-06-19"""class Spider(object): header = { 'User-Agent': 'Mozilla/5.0 (X11; Li
2020-06-19 11:46:10 3807
原创 scrapy爬取东方财富
只有spiders部分,看不懂的私聊,从不写注释,就是这么任性# -*- coding: utf-8 -*-import scrapy, json, re, timefrom Spider.spider.tool.config import ConfigToolfrom Spider.spider.item.eastmoneyitem import EastmoneyItemfrom Spider.spider.tool.common_def import *"""__date__:
2020-06-15 17:17:42 1838
原创 爬取猪肉价格网
requests爬取猪价格网数据直接上代码# -*- coding: utf-8 -*-import requests, timefrom lxml import etree"""__date__: 2020-06-15__author__: 落神猪肉价格网,无存储模块"""class ZhuSpider(object): def __init__(self): self.url = "http://www.zhujiage.com.cn/arti
2020-06-15 17:03:14 376
原创 Mysql命令之基础操作
1、创建表CREATE TABLE `score` ( `id` BIGINT(20) NOT NULL AUTO_INCREMENT, `change_type` VARCHAR(255) NULL DEFAULT NULL, `create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, `score` INT(11) NULL DEFAULT NULL, `user_id` BIGINT(20) NU
2020-06-15 09:57:08 169
原创 python3解决虚拟环境下找不到pip和pip安装第三方包错误
1、打开终端,找到所在虚拟环境,进入easy_install.exe所在目录;2、执行命令:.\easy_install.exe pip;3、如果下载不成功,是因为easy_install.exe默认使用的是官方镜像(外国网网站),需更换国内网站;4、修改easy_install的镜像源,找到工程所在的虚拟环境,然后找到 ..\Lib\site-packages\setuptools\command\easy_install.py用编辑器或者文本格式打开,找到下图所示位置(可以使用ctrl+..
2020-06-10 18:10:48 2923
原创 mongoDB命令使用
一、mongoDB安装参见 https://www.cnblogs.com/zhoulifeng/p/9429597.html二、mongo启动 win10下1、安装配置完成后,打开命令窗口,进入到bin目录下输入mongod --dbpath E:\software\MongoDB\data\db2、另起一个窗口输入mongo三、mongo命令1、批量更新某一字段的值db.getCollection('reports_stock')...
2020-06-10 17:03:25 115
原创 mongo迁移数据之导入导出
一、本机迁移1、导出所有数据mongoexport -u 连接名 -p 密码 --authenticationDatabase admin -d 库名 -c 集合名 -o 导出路径(绝对路径) --type json2、导出指定字段的数据mongoexport -u 连接名 -p 密码 --authenticationDatabase admin -d 库名 -c 集合名 -o 导出路径(绝对路径) --type json -f "字段如(name、title、date)"3、
2020-06-10 16:48:00 327
原创 centos下Redis报错:redis.exceptions.ResponseError: MISCONF Redis is configured to save RDB snap
错误的原因:服务器强制把redis快照关闭了导致不能持久化。解决办法:1、redis-cli连接上redis输入config set stop-writes-on-bgsave-error no2.修改redis.conf文件:vi打开redis.conf文件,然后将stop-writes-on-bgsave-error改为no。...
2020-05-18 11:43:57 348
原创 selenium翻页模块
在爬取一些懒加载的网站时,需要执行下滑操作,下滑的过程中不能一下直接下滑到页面的底部,会造成图片加载不出来必须要进行持续的翻页下滑操作def pulldown(driver): """ 获取滚轮,分页向下滑动直至最底部,加载出图片 """ t = True while t: check_height = driver.execute...
2020-05-07 10:57:39 1063
原创 记录:selenium点击“下一页”或“继续阅读”出现的错误以及解决方式
模拟浏览器爬取某些网站的时候,点击下一页或者继续阅读标签会出现Element:ElementClickInterceptedException如果出现这种错误,说明这个标签被隐藏了,可以采取以下两种方式解决1、button = driver.find_element_by_xpath('//a[@id="btn-read-all"]')webdriver.ActionChain...
2020-05-07 10:46:41 24896 1
原创 scrapy-redis爬虫
简单的分布式爬虫1、settings配置import osROBOTSTXT_OBEY = FalseDOWNLOAD_DELAY = 1DEFAULT_REQUEST_HEADERS = { 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like G...
2020-04-21 17:04:55 155
原创 selenium+Chrom更改浏览器下载路径
1、浏览器有界面情况下设置下载路径def selenium_driver(enact): """ 驱动浏览器无头模式设置 """ options = Options() # options.add_argument('--headless') # options.add_argument('--no-sandbox') # option...
2020-04-15 09:10:27 2450
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人