自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

潘森迷的博客

it爱好者

  • 博客(23)
  • 收藏
  • 关注

原创 一晚上做了一个xpath终结者:xpath-helper-plus

作为一个资深『xpath』提取工程师,想要快速从页面中拿到数据,肯定需要借助一些工具,而最初接触的就是这块浏览器插件。使用一段时间后,发现笔者有一些特别的需求,想在此基础上扩展一下。于是乎就学习了如何开发chrome插件?如何使用自己属性的vue来开发?经过双休一顿文档、gayhub了解之后,有了这样一款工具。xpath-helper2.0.2原生是支持按住shift后通过鼠标来定位选择元素,并输出xpath语法,但是这种方式出来的xptah语法并不友好。比如说我想拾取掘金的某个文章标题:它出来了一个

2022-06-24 14:45:48 872 1

原创 python中*args和**kwargs的使用

文章来源:*Args和**kwargs的使用[重复] - 代码领悟code05.com提问:*Args和**kwargs的使用[重复]所以我对*args和**kwargs的概念有困难。到目前为止,我已经了解到:*args=参数列表-作为位置参数**kwargs=dictionary-其键成为单独的关键字参数,值成为这些参数的值。我不明白这会对什么编程任务有帮助。 也许吧:我想输入列表和字典作为函数的参数,并在同一时间作为通配符,所以我可以传递任何参数?是否有一个简单的例子来解释*args和

2022-03-26 15:19:06 854

原创 Python中Type()和isinstance()有什么区别?

文章来源:Type()和isinstance()有什么区别? - 代码领悟code05.com提问:Type()和isinstance()有什么区别?这两个代码段有什么区别?使用type():import typesif type(a) is types.DictType: do_something()if type(b) in types.StringTypes: do_something_else()使用isinstance():if isinstance(a, dict

2022-03-23 12:20:28 1322

原创 __Str__和__repr__有什么区别?

文章来源:__Str__和__repr__有什么区别? - 代码领悟code05.com提问:__Str__和__repr__有什么区别?Python中的__str__和__repr__有什么区别?回答:Alex总结得很好,但令人惊讶的是,过于简洁。首先,让我重申Alex的帖子中的要点:默认实现是无用的(很难想到一个不会是,但是是的)__repr__目标是毫不含糊__str__目标是可读Container'S__str__使用contained objects'__repr__默认实现是无用

2022-03-23 12:00:00 121

原创 如何整合Flask&Scrapy?

文章来源:如何整合Flask&Scrapy? - 代码领悟code05.com提问:如何整合Flask&Scrapy?我正在使用scrapy来获取数据,我想使用flask web框架在网页中显示结果。 但不知道如何调用flask应用程序中的蜘蛛。 我已经尝试使用CrawlerProcess来调用我的蜘蛛,但我得到了这样的错误:ValueErrorValueError: signal only works in main threadTraceback (most recent cal

2022-03-23 08:36:26 1152

原创 如何列出目录的所有文件?

文章来源:如何列出目录的所有文件? - 代码领悟code05.com提问:如何列出目录的所有文件?如何在Python中列出一个目录的所有文件并将它们添加到alist中?回答:os.listdir()将为您提供目录中的所有内容-文件和目录。如果你想要只是文件,你可以使用os.path:from os import listdirfrom os.path import isfile, joinonlyfiles = [f for f in listdir(mypath) if isfile(join(m

2022-03-22 13:36:47 575

原创 Staticmethod和classmethod的区别

文章来源:Staticmethod和classmethod的区别 - 代码领悟code05.com提问:Staticmethod和classmethod的区别用@staticmethod修饰的函数和用@classmethod修饰的函数有什么区别?回答:也许一些示例代码会有所帮助:注意foo,class_foo和A的调用签名的差异:class A(object): def foo(self, x): print(f"executing foo({self}, {x})")

2022-03-22 13:26:01 479

转载 [代码领悟]一日一爬:薄荷健康食物热量

文章来源:一日一爬:薄荷健康食物热量 - 爬虫教程 - 代码领悟code05.com本文仅供学习参考。 薄荷健康秉承“为年轻家庭提供更健康、更美味的食品和饮料”的公司使命,为8000万用户提供个性化智能营养处方与一站式健康解决方案,致力于成为年轻家庭首选的健康生活方式品牌。左侧是食物的大类,右侧是具体的食物。程序要做的事情,就是进入每个食物大类,然后爬取右侧各类食物,进行翻页爬取。前端页面最大展示100条记录,所以程序也就爬取100条(10页)逻辑:进入第一个大类->查询第一页->查询第二

2022-03-21 17:15:26 681

原创 Vue3自动路由注册

传统的路由注册,是固定定义好哪些路由映射哪些页面,如:import {RouteRecordRaw} from "vue-router";const routes = [ { path: '/', name: 'home', component: () => import('@/views/home.vue') }] as RouteRecordRaw[]export default routes在示例代码中,路由/映射

2022-02-22 15:54:46 1490 2

原创 Scrapy源码学习-请求去重(单机)

请求去重这是爬虫岗一道高频出现的面试题:Q:对于重复的请求,scrapy是如何去重的?去重原理是什么?请求是如何计算唯一性的?带着这个问题,进入今天的主题。DUPEFILTER_CLASS在scrapy项目配置中,DUPEFILTER_CLASS是框架对请求去重规则的设置项。默认的类路径:scrapy.dupefilters.RFPDupeFilter。进入到文件中,观察到类RFPDupeFilter继承自BaseDupeFilter,而BaseDupeFilter似乎什么都没做,只是定义了一些

2022-02-16 13:30:00 544

原创 Scrapy源码学习-Middleware

使用scrapy框架开发一款爬虫,或多或少都会用到中间件。常见的中间件有UserAgent中间件、代理中间件等等。其主要作用就是在爬虫请求的过程中,通过自定义内置的一些方法,来改变如请求的结构,从而伪装请求客户端。比如,在UserAgent中间件中,通过编写process_request方法,将请求中的headers添加自定义ua,或者随机ua来实现动态UserAgent。class UserAgentMiddleware: def process_request(self, request,

2022-02-15 15:34:36 571

原创 Scrapy源码学习-ItemLoader

item在scrapy项目结构中,有一个items.py的文件,在里面是专门存放和定义抓取数据字段的。这当然不是强制性要求的。但这种数据字段的定义能够更好地约束未来抓取字段,并且开发者可以一目了然的知道抓了哪些数据。比如我们需要抓取影视网站,可以这样定义:class MovieItem(scrapy.Item): title = scrapy.Field() url = scrapy.Field() cover = scrapy.Field() actors = scr

2022-02-13 15:26:17 998

原创 Scrapy通过扩展启用爬虫完成后消息通知,支持钉钉/微信/飞书等

背景使用过scrapy的开发者都知道,scrapy在爬取结束后是允许发送邮件通知的它内部是通过外部扩展extension的方式集成于scrapy的。邮件实现功能类https://docs.scrapy.org/en/latest/topics/email.html邮件异步通知扩展类https://docs.scrapy.org/en/latest/topics/extensions.html#module-scrapy.extensions.statsmailer在使用过程中需要配置邮箱的信息

2021-03-29 17:21:06 643

原创 webjs - 财联社登录密码加密入口及JS改写

入口aHR0cHM6Ly93d3cuY2xzLmNuLw==尝试登录F12 抓包结果由于我输入的密码明文是:qq1234,而这个45开头,d9结尾。老司机一眼就看出来是MD5加密了。直接调用md5加密库就行。但……这不是本文的目的。本文目的是找到加密入口和JS的改写。言归正传MD5加密入口使用XHR断点数据包。(v1/user/login)再次点击登录。成功在此处断下。可以发现这里断下时候字段password已经被加密了,所以我们应该往上寻找,寻找它在哪里加密的。根据它的堆

2021-03-25 16:09:34 988

原创 最近部署和管理scrapy爬虫的一些事

近期开发了几个辅助工具,主要是可视化管理爬虫和任务的调度。因为太过定制化,所以市面上的现成管理工具用起来并不适合。scrapyd-admin 主要是基于scrapyd提供的API做的可视化UI操作,其功能相对简单,上传egg格式的爬虫打包文件,然后选择爬虫文件(spiders目录下)进行调度。也可对爬虫进行自定义传参,当然前提是开发爬虫的时候有接收参数。有了这个可视化管理还不够,如何对全国N个城市进行任务分发,数据清洗和入库呢?随后又做了一个地方站点任务调度。进行指定站点的任务派发和监控

2021-03-25 15:37:44 113

原创 scrapy可视化部署分布式爬虫

必要条件scrapy基于此框架开发爬虫脚本scrapyd基于此库远程调度scrapy项目,对外提供api接口redis利用redis-set不可重复特性,写入url-hash自动检测/入库mongodb结果数据写入MongoDB,可更换mysql或其他u like可视化管理在开发这个scrapy可视化部署管理软件之前,我也大量使用了前辈大佬们开发的跨平台或基于GO,或基于Django等开发的web版部署,学习了大佬的流程及经验做了总结。emmm…大概就长这个亚子。未完待续……

2021-03-25 15:18:26 238

原创 Scrapy-pipeline-数据存入MongoDB

import pymongofrom itemadapter import ItemAdapterclass MongoPipeline: collection_name = 'scrapy_items' def __init__(self, mongo_uri, mongo_db): # mongo_uri="mongodb://user:pass@[email][email protected][/email]:27017" self.mongo_ur.

2021-03-18 13:49:45 181

原创 Vue错误日志-安装

项目场景:安装vue报错提示问题描述:C:\Users\Administrator>npm install -g @vue/cli@nextnpm WARN deprecated [email protected]: https://github.com/lydell/resolve-url#deprecatednpm WARN @vue/[email protected] requires a peer of [email protected] but none is installed. You m

2021-02-23 14:17:26 1199

原创 一日一技:爬取薄荷网食物热量

在线接单:网页、小程序、app爬虫、数据挖掘、API接口定制、Django网站开发本文仅供学习参考。薄荷健康秉承“为年轻家庭提供更健康、更美味的食品和饮料”的公司使命,为8000万用户提供个性化智能营养处方与一站式健康解决方案,致力于成为年轻家庭首选的健康生活方式品牌。左侧是食物的大类,右侧是具体的食物。程序要做的事情,就是进入每个食物大类,然后爬取右侧各类食物,进行翻页爬取。前端页面最大展示100条记录,所以程序也就爬取100条(10页)逻辑:进入第一个大类-...

2020-10-24 17:01:48 2318 2

原创 一日一技:使用python如何爬取前程无忧招聘岗位

在线接单:网页、小程序、app爬虫、数据挖掘、API接口定制、Django网站开发本文仅供学习参考。分析观察:通过网站顶部导航,选择职位搜索:如下图会展示职业的筛选,我们全部保持默认所有。而下方列表,会呈现出所有筛选结果:同时,我们观察到,共有2000页的招聘岗位(实际远不止,网站最大页数2000)而我们要做的,就是逐一翻页,保存列表的结果。得到列表结果:开启抓包后,通过翻页,可以发现网站发起了AJAX异步请求。而这个请求的返回结果,就有我们需要的数据。.

2020-10-09 13:58:26 604

原创 一日一技:我是如何爬取百万影视资源的

在线接单:网页、小程序、app爬虫、数据挖掘、API接口定制、Django网站开发以下内容仅供学习,爬取过程中请适当放慢速度,防止给网站造成不必要的流量攻击。先看下成果:包含的字段有:标题、网址、影视信息(导演/演员/时长……)、m3u8下载地址、在线播放地址所用到的模块:httpx:网络请求访问lxml:网页解析模块logging:日志模块完整代码:import httpxfrom lxml import etreeimport log...

2020-10-09 11:42:28 1568

原创 webjs - 网易云音乐加密

在线接单:网页、小程序、app爬虫、数据挖掘、API接口定制、Django网站开发分析问题在浏览网易云音乐网站时候发现,很多操作譬如听歌、查看评论等操作,提交参数均为params+encSecKey组合提交。encSecKey:一直是256位。分析加密字段以常规方式,通过搜索看看能否定位到加密入口。入口函数d及参数function d(d, e, f, g) { var h = {} , i = a(16); return h.encText = b(d..

2020-10-09 09:15:35 698

原创 Python如何调用易语言DLL

对Python能够调用天下语言一直有所耳闻,今天试试能不能调用易语言,虽说不能调用.e文件,但至少易语言生成的dll文件应该问题不大。接下来就开始调用。被调用的易语言dll:.版本 2.子程序 get_disk_info, 文本型, 公开.参数 disk_name, 文本型.局部变量 used_space, 长整数型.局部变量 use_space, 长整数型.局部变量 ...

2020-10-05 11:10:06 3728

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除