02 2022 档案
摘要:connect_db:连接数据库,并操作数据库 import pymysql class OperationMysql: """ 数据库SQL相关操作 import pymysql 打开数据库连接 db = pymysql.connect("localhost","testuser","test12
阅读全文
摘要:1. 日志相关概念 1.1 日志的作用 通过log的分析,可以方便用户了解系统或软件、应用的运行情况;如果你的应用log足够丰富,也可以分析以往用户的操作行为、类型喜好、地域分布或其他更多信息;如果一个应用的log同时也分了多个级别,那么可以很轻易地分析得到该应用的健康状况,及时发现问题并快速定位、
阅读全文
摘要:Appium环境搭建 有的APP需要反编译,分析加密算法后,再获取信息。有的APP还需要脱壳,再需要反编译,分析加密算法。但要再了解这些问题,还是需要花些时间的,所以在些,我们可以通过移动端对APP的控制,来解析数据获取数据。 1. Android SDK安装 SDK:(software devel
阅读全文
摘要:利用appium提取数据 1 appium-python-client使用 1.1 安装appium-python-client模块 pip install appium-python-client 1.2 初始化以及获取移动设备分辨率 完成代码如下,并运行代码查看效果:如果模拟器中抖音app被启动
阅读全文
摘要:移动端爬虫 爬虫除了 Web 网页,也可以抓取 App 的数据。App 中的页面要加载出来,首先需要获取数据,而这些数据一般是通过请求服务器的接口来获取的。由于 App 没有浏览器这种可以比较直观地看到后台请求的工具,所以主要用一些抓包技术来抓取数据 1. 抓包工具的安装 Fiddler是一个htt
阅读全文
摘要:Scrapyd的安装与使用 Scrapyd — Scrapyd 1.2.0 documentation scrapyd是一个用于部署和运行scrapy爬虫的程序,它允许你通过JSON API来部署爬虫项目和控制爬虫运行,scrapyd是一个守护进程,监听爬虫的运行和请求,然后启动进程来执行它们 1.
阅读全文
摘要:常见的加密方式 1. Base64 1.1 介绍 Base64是一种用64个字符来表示任意二进制数据的方法。base64是一种编码方式而不是加密算法。只是看上去像是加密 Base64使用A-Z,a-z,0-9,+,/ 64个字符实现对数据进行加密 1.2 Python使用 import base64
阅读全文
摘要:IP代理池 1. 代理IP从何而来 刚自学爬虫的时候没有代理IP就去西刺、快代理之类有免费代理的网站去爬,还是有个别代理能用。当然,如果你有更好的代理接口也可以自己接入。 免费代理的采集也很简单,无非就是:访问页面页面 —> re/json/xpath提取 —> 保存 2. 如何保证代理质量 可以肯
阅读全文
摘要:图片验证码 1. 介绍 验证码(CAPTCHA)是“Completely Automated Public Turing test to tell Computers and Humans Apart”(全自动区分计算机和人类的图灵测试)的缩写,是一种区分用户是计算机还是人的公共全自动程序。 防止恶
阅读全文
摘要:Python 调用 JS 的几种方式 日常 Web 端爬虫过程中,经常会遇到参数被加密的场景,因此,我们需要分析网页源代码 通过调式,一层层剥离出关键的 JS 代码,使用 Python 去执行这段代码,得出参数加密前后的 Python 实现 //计算两个数的和 function add(num1,
阅读全文
摘要:安装 pip安装scrapy-splash库 pip install scrapy-splash scrapy-splash使用的是Splash HTTP API, 所以需要一个splash instance,一般采用docker运行splash,所以需要安装docker 安装docker, 安装好
阅读全文
摘要:1. Splash介绍 Splash是一个JavaScript渲染服务,是一个带有HTTP API的轻量级浏览器,同时它对接了Python中的Twisted和QT库。利用它,我们同样可以实现动态渲染页面的抓取 文档地址: 文档http://splash.readthedocs.io/en/stabl
阅读全文
摘要:常见的反爬手段和解决思路 为什么要反爬 因爬虫的访问频率过高影响服务器的运行 影响别人业务 导致服务器宕机 单一的DoS攻击一般是采用一对一方式的,它利用网络协议和操作系统的一些缺陷,采用欺骗和伪装的策略来进行网络攻击,使网站服务器充斥大量要求回复的信息,消耗网络带宽或系统资源,导致网络或系统不胜负
阅读全文
摘要:setting文件配置 #启用Redis调度存储请求队列 SCHEDULER = "scrapy_redis.scheduler.Scheduler" #确保所有的爬虫通过Redis去重 DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilte
阅读全文
摘要:使用CentOSmini 系统 1. 安装 python3 1.1 安装装python3的环境 yum install gcc* zlib* 1.2 下载 Python3 **在官方网站下载最新版本python3.8*8 wget https://www.python.org/ftp/python/
阅读全文
摘要:1. 介绍scrapy-redis框架 scrapy-redis 一个三方的基于redis的分布式爬虫框架,配合scrapy使用,让爬虫具有了分布式爬取的功能。 github地址: https://github.com/darkrho/scrapy-redis 2. 分布式原理 scrapy-red
阅读全文
摘要:1. Spider 下载中间件(Middleware) Spider 中间件(Middleware) 下载器中间件是介入到 Scrapy 的 spider 处理机制的钩子框架,您可以添加代码来处理发送给 Spiders 的 response 及 spider 产生的 item 和 request 2
阅读全文
摘要:1. Scrapy-Request和Response(请求和响应) Scrapy的Request和Response对象用于爬网网站。 通常,Request对象在爬虫程序中生成并传递到系统,直到它们到达下载程序,后者执行请求并返回一个Response对象,该对象返回到发出请求的爬虫程序。 2. Req
阅读全文
摘要:CrawlSpiders 原理图 通过下面的命令可以快速创建 CrawlSpider模板 的代码 scrapy genspider -t crawl 文件名 (allowed_url) 首先在说下Spider,它是所有爬虫的基类,而CrawSpiders就是Spider的派生类。对于设计原则是只爬取
阅读全文
摘要:Scrapy内置设置 settings-2.5.0文档 (scrapy.org) 下面给出scrapy提供的常用内置设置列表,你可以在settings.py文件里面修改这些设置,以应用或者禁用这些设置项 BOT_NAME 默认: 'scrapybot' Scrapy项目实现的bot的名字。用来构造默
阅读全文
摘要:爬取小说 spider import scrapy from xiaoshuo.items import XiaoshuoItem class XiaoshuoSpiderSpider(scrapy.Spider): name = 'xiaoshuo_spider' allowed_domains
阅读全文
摘要:1. 介绍 Scrapy提供了一个 item pipeline ,来下载属于某个特定项目的图片,比如,当你抓取产品时,也想把它们的图片下载到本地。 这条管道,被称作图片管道,在 ImagesPipeline 类中实现,提供了一个方便并具有额外特性的方法,来下载并本地存储图片: 将所有下载的图片转换成
阅读全文
摘要:1. 数据的提取 1.1 控制台打印 import scrapy class DoubanSpider(scrapy.Spider): name = 'douban' allwed_url = 'douban.com' start_urls = [ 'https://movie.douban.com
阅读全文
摘要:1. Item Pipeline 介绍 当Item 在Spider中被收集之后,就会被传递到Item Pipeline中进行处理 每个item pipeline组件是实现了简单的方法的python类,负责接收到item并通过它执行一些行为,同时也决定此Item是否继续通过pipeline,或者被丢弃
阅读全文
摘要:1 基本使用 1.1 创建项目 运行命令: scrapy startproject myfrist(your_project_name) 文件说明: 名称 作用 scrapy.cfg 项目的配置信息,主要为Scrapy命令行工具提供一个基础的配置信息。(真正爬虫相关的配置信息在settings.py
阅读全文
摘要:1 Scrapy提取项目 从网页中提取数据,Scrapy 使用基于 XPath 和 CSS 表达式的技术叫做选择器。以下是 XPath 表达式的一些例子: 这将选择 HTML 文档中的 <head> 元素中的 <title> 元素 /html/head/title 这将选择 <title> 元素中的
阅读全文
摘要:selenium参数的使用 1 元素拖拽 要完成元素的拖拽,首先你需要指定被拖动的元素和拖动目标元素,然后利用 ActionChains 类来实现 <!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="v
阅读全文
摘要:1. Scrapy 框架介绍 Scrapy 是一个用于抓取网站和提取结构化数据的应用程序框架,可用于各种有用的应用程序,如数据挖掘、信息处理或历史存档。 尽管 Scrapy 最初是为网络抓取而设计的,但它也可用于使用 API提取数据或用作通用网络爬虫。 1.1 为什么要使用Scrapy? 它更容易构
阅读全文
摘要:1 等待 1.1 强制等待 使用 time.sleep 作用: 当代码运行到强制等待这一行的时候,无论出于什么原因,都强制等待指定的时间,需要通过time模块实现 优点:简单 缺点:无法做有效的判断,会浪费时间 1.2 隐式等待 到了一定的时间发现元素还没有加载,则继续等待我们指定的时间,如果超过了
阅读全文
摘要:selenium 处理下拉框 下拉框是我们最常见的一种页面元素,对于一般的元素,我们只需要一次就定位,但下拉框里的内容需要进行两次定位,先定位到下拉框,再定位到下拉框内里的选项。 drop_down.html <html> <body> <select id="ShippingMethod" onc
阅读全文
摘要:Selenium 调用js方法 execute_script(script, *args) 有时候我们需要控制页面滚动条上的滚动条,但滚动条并非页面上的元素,这个时候就需要借助js是来进行操作。 一般用到操作滚动条的会两个场景: 要操作的页面元素不在当前页面范围,无法进行操作,需要拖动滚动条 注册时
阅读全文
摘要:1. 窗口的定位 对于一个现代的web应用,经常会出现框架(frame) 或窗口(window)的应用,这也就给我们的定位带来了一个难题。 有时候我们定位一个元素,定位器没有问题,但一直定位不了,这时候就要检查这个元素是否在一个frame中,seelnium webdriver 提供了一个switc
阅读全文
摘要:1. Selenium 控制浏览器 1.1 最大化窗口 我们知道调用启动的浏览器不是全屏的,这样不会影响脚本的执行,但是有时候会影响我们“观看”脚本的执行。 browser = webdriver.Chrome() url= 'http://www.baidu.com' browser.get(ur
阅读全文
摘要:对象的定位应该是自动化的核心,要想操作一个对象,首先应该识别这个对象。 一个对象就是一个人一样,他会有各种的特征(属性),如比我们可以通过一个人的身份证号,姓名,或者他住在哪个街道、楼层、门牌找到这个人。 1.1 对象定位 webdriver提供了一系列的对象定位方法,常用的有以下几种 单个元素选取
阅读全文
摘要:1. Selenium 安装与测试 Selenium是一个Web的自动化测试工具,最初是为网站自动化测试而开发的,类型像我们玩游戏用的按键精灵,可以按指定的命令自动操作,不同是Selenium 可以直接运行在浏览器上,它支持所有主流的浏览器(包括PhantomJS这些无界面的浏览器)。 Seleni
阅读全文
摘要:1 协程 首先我们需要知道的是requests是同步的方法。而我们若想使用协程,写的方法都尽量不是使用同步的方法。 因些我们,选择使用一个新的模块库`aiohttp 官网 https://docs.aiohttp.org/en/stable/ 1.1 安装 pip install aiohttp 1
阅读全文
摘要:1. 引入 我们之前写的爬虫都是单个线程的?这怎么够?一旦一个地方卡到不动了,那不就永远等待下去了?为此我们可以使用多线程或者多进程来处理。 不建议你用这个,不过还是介绍下了,如果想看可以看看下面,不想浪费时间直接看 2. 如何使用 爬虫使用多线程来处理网络请求,使用线程来处理URL队列中的url,
阅读全文
摘要:1 多进程 multiprocessing是python的多进程管理包,和threading.Thread类似 1.1 multiprocessing模块 直接从侧面用subprocesses替换线程使用GIL的方式,由于这一点,multiprocessing模块可以让程序员在给定的机器上充分的利用
阅读全文
摘要:1. JSON与JsonPATH JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,它使得人们很容易的进行阅读和编写。同时也方便了机器进行解析和生成。适用于进行数据交互的场景,比如网站前台与后台之间的数据交互。 JSON和XML的比较可谓不相上下。 Pyt
阅读全文
摘要:1. 介绍 之前 BeautifulSoup 的用法,这个已经是非常强大的库了,不过还有一些比较流行的解析库,例如 lxml,使用的是 Xpath 语法,同样是效率比较高的解析方法。如果大家对 BeautifulSoup 使用不太习惯的话,可以尝试下 Xpath 官网 http://lxml.de/
阅读全文
摘要:1. pyquery 1.1 介绍 如果你对CSS选择器与Jquery有有所了解,那么还有个解析库可以适合你--Jquery 官网https://pythonhosted.org/pyquery/ 1.2 安装 pip install pyquery 1.3 使用方式 1.3.1 初始化方式 字符串
阅读全文
摘要:1. Beautiful Soup的简介 Beautiful Soup提供一些简单的、python式的函数用来处理导航、搜索、修改分析树等功能。它是一个工具箱,通过解析文档为用户提供需要抓取的数据,因为简单,所以不需要多少代码就可以写出一个完整的应用程序。 Beautiful Soup自动将输入文档
阅读全文
摘要:1. 提取数据 在前面我们已经搞定了怎样获取页面的内容,不过还差一步,这么多杂乱的代码夹杂文字我们怎样把它提取出来整理呢?下面就开始介绍一个十分强大的工具,正则表达式! 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字
阅读全文
摘要:1. Cookie 为什么要使用Cookie呢? Cookie,指某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密) 比如说有些网站需要登录后才能访问某个页面,在登录之前,你想抓取某个页面内容是不允许的。那么我们可以利用Urllib库保存我们登录的Cooki
阅读全文
摘要:1. 介绍 对了解一些爬虫的基本理念,掌握爬虫爬取的流程有所帮助。入门之后,我们就需要学习一些更加高级的内容和工具来方便我们的爬取。那么这一节来简单介绍一下 requests 库的基本用法 2. 安装 利用 pip 安装 pip install requests 3. 基本请求 req = requ
阅读全文
摘要:1. 小试牛刀 怎样扒网页呢? 其实就是根据URL来获取它的网页信息,虽然我们在浏览器中看到的是一幅幅优美的画面,但是其实是由浏览器解释才呈现出来的,实质它是一段HTML代码,加 JS、CSS,如果把网页比作一个人,那么HTML便是他的骨架,JS便是他的肌肉,CSS便是它的衣服。所以最重要的部分是存
阅读全文
摘要:1. 伪装自己 有些网站不会同意程序直接用上面的方式进行访问,如果识别有问题,那么站点根本不会响应,所以为了完全模拟浏览器的工作 1.1 设置请求头 其中User-Agent代表用的哪个请求的浏览器 代码如下: from urllib.request import urlopen from urll
阅读全文
摘要:1. 常用的工具 python pycharm 浏览器 chrome 火狐 fiddler 2 fiddler的使用 2.1 操作界面 2.2 界面含义 请求 (Request) 部分详解 名称 含义 Headers 显示客户端发送到服务器的 HTTP 请求的,header 显示为一个分级视图,包含
阅读全文
摘要:1. 什么是爬虫? 网络爬虫也叫网络蜘蛛,如果把互联网比喻成一个蜘蛛网,那么蜘蛛就是在网上爬来爬去的蜘蛛,爬虫程序通过请求url地址,根据响应的内容进行解析采集数据, 比如:如果响应内容是html,分析dom结构,进行dom解析、或者正则匹配,如果响应内容是xml/json数据,就可以转数据对象,然
阅读全文