新接触的一个无头浏览器,pupprteer
以前都是使用selenium闯荡江湖,没想到折戬沉沙在这里,没有办法获取request headers 中的某参数a,这个a十分的重要,且账户不允许同时登陆,这就给我造成了很大的困扰,但是恰巧pupprteer可以获取,话不多说,先说安装
node 是必须安装的,如何安装自行百度吧
捷豹系列之puppeteer
pupprteer这个东西安装起来十分的费劲,费了我很大的功夫也没有做到全局安装,是真的失败 谁让我想要的在那一头,而我在这一头呢 ,最开始的度娘是告诉我cnpm大法好,但是没啥作用,你们可以试试,然后就是淘宝镜像, 但是安装成功之后他依旧是运行不起来 ,没办法只能选定一个文件夹,做局部安装了
首先
npm init
初始化你的 环境,然后一路回车到底,看你所在的文件夹哟有没有出现package.json
文件,如果没有请重试其次输入
npm i puppeteer
进行安装,如不成功者可尝试安装淘宝镜像npm config set puppeteer_download_host=https://npm.taobao.org/mirrors
或者在后面直接放路由,然后到这里我就是成功了 ,可以找一些domenode xxx.js
运行一下是否成功
捷豹系列之断点续爬
研究了一下一共有两种方案
JOB 暂停&恢复
此类方案只能使用ctrl+c这种温柔的方式暂停她,然后再ctrl+c打开它
如果遭遇强杀就会失效,只要在你启动语句后面加上
-s JOBDIR=crawls/somespider-1
就可以了,即:
scrapy crawl xxx -s JOBDIR=crawls/somespider-1
其实也就是添加了一个队列,再文件夹中生成一个文件,但是不知道是我的操作哪里有问题,我用pycharm爬取的时候使用红色按钮去关掉爬虫,队列并没有清空,scrapy会给我当作重复页面给我干掉,心塞
scrapy-redis
redis在断电续爬这个方向还是很优秀的,scrapy也已经有了可以和redis交互的模块 要想使用她,就要在settings中配置以下内容:
-
设置重复过滤器的模块
DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter"
-
设置调取器,scrap-redis中的调度器具备与数据库交互的功能
SCHEDULER = "scrapy_redis.scheduler.Scheduler"
-
设置当爬虫结束的时候是否保持redis数据库中的去重集合与任务队列
SCHEDULER_PERSIST = True
-
在管道中设置将数据保存到redis数据库中
ITEM_PIPELINES = {
/# 当开启该管道,该管道将会把数据存到Redis数据库中
'scrapy_redis.pipelines.RedisPipeline': 400,
/# ‘EPC.pipelines.SaveFilePipeline’: 500
}
-
配置redis数据库
REDIS_URL = "redis://127.0.0.1:6379"
-
然后打开中间件即可
这个我没有试过,,,主要是着急,有机会再说
爬虫之401骚操作
由于账号是借的,又不能同时登陆,所以就显得格外的卑微,当别人登陆的时候就会出现401错误,在中间件可以捕捉到401错误,我设置了如果401则更新我的认证,后来发现更新之后我的队列的认证没有更新,导致之后的每一次访问都需要更新对我造成了极大的麻烦,所以我改成了读文件,更新,然后去发requests请求看是否401,如果是则puppeteer,更新认证,如果不是则继续搞定了这个麻烦的认证,可能是我做麻烦了 ,但是真的是被逼无奈,如果你有幸看到这个帖子,又有什么好的想法或者模块,楼下评论虚心求教
爬虫之pandans
要求的数据是excel,所以本能的反映让我想到了pandans,是真的好用,先写一下我用到的操作
df = pd.DataFrame(columns=['q', 'w', 'e', 'r', 't', 'y', 'u', 'i', '', 'o', 'p', 'a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'z'])
dg = pd.DataFrame([data])
df=df.append(dg,sort=False)
因为我的data数据未必全,所以我在合并的时候写入了sort=False
保证了列名不会乱掉
实话实说,pandans真的强大,但是我是一条一条写的,太浪费时间了
所以也算是骚操作吧,我将data数据写入了json文件中,爬虫结束后统一用pandans 切换格式是真的快,nice
之后补充 啥再说,鄙人啥也不是,散会