python爬虫---js加密和混淆,scrapy框架的使用.

一丶js加密和js混淆

js加密

​ 对js源码进行加密,从而保护js代码不被黑客窃取.(一般加密和解密的方法都在前端)

http://www.bm8.com.cn/jsConfusion/ # 反解密

js混淆

# 目的: 为了缩小js体积,加快http传输速度 ,混淆的目的是保护代码
· 合并多个js文件 · 去除js代码里面的空格和换行 · 压缩js里面的变量名 · 剔除掉注释

二丶SCRAPY爬虫框架

概述scrapy框架特点

    - 高性能的网络请求
- 高性能的数据解析
- 高性能的持久化存储
- 深度爬取
- 全栈爬取
- 分布式
- 中间件
- 请求传参

下载与安装

- 环境的安装:
- mac/linux:pip install scrapy
- window:
- pip install wheel
- 下载twisted http://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted
- 进入下载目录,执行 pip install Twisted‑17.1.0‑cp35‑cp35m‑win_amd64.whl
- pip install pywin32
- pip install scrapy

基本使用

​ 创建项目

 - 新建一个工程:scrapy startproject ProName
- 目录结构:
- spiders(包):空包
- settings:配置文件
- 不遵从robots
- UA伪装
- 日志等级的指定 - cd ProName:进入到工程目录中
- 在spiders(爬虫文件夹)中创建一个爬虫文件
- scrapy genspider spiderName www.xxx.com
- 编写代码:主要的代码会编写在爬虫文件中
- 执行工程:scrapy crawl spiderName

​ scrapy目录结构

- 项目名
- 同名项目文件夹
- spiders 文件夹
- init.py
- items.py
- middlewares.py
- pipelines.py
- settings.py
- scrapy.cfg

​ scrapy数据解析

# scrapy 可以使用 xpath进行解析
# extract_first() 获取 读取文本并获得索引为0的字符串
# extract() 获取文本
content = div.xpath('.//div[@class="link-detail"]/a/text()').extract_first()

​ scrapy数据存储

# 基于终端进行持久化存储
- 只可以将parse方法的返回值存储到本地的磁盘文件(指定形式后缀)中
- scrapy crawl spiderName -o filePath # 基于管道持久化存储 (**)
- 在items注册存储的字段 (Filed万能字段,包含大部分数据类型)
- 在piplelines文件 编写管道类 ,并在settings配置文件进行注册'ITEM_PIPELINES' - 编码流程
- 1.在爬虫文件中进行数据解析
- 2.在item类中定义相关的属性
- 3.将解析到的数据存储到一个item类型的对象中
- 4.将item类型的对象提交给管道 (yiled item)
- 5.管道类的process_item方法负责接受item,接受到后可以对item实现任意形式的持久化存储操作
- 6.在配置文件中开启管道 - 一个管道类对应一种平台的持久化存储 ## 两种方式
# 基于 本地的管道存储
class ChoutiproPipeline(object):
# 重写父类的方法, 只执行一次
fp = None def open_spider(self, spider):
print('开始爬虫~~~~')
self.fp = open('./本地持久化存储文件.txt', 'w', encoding='utf-8') def process_item(self, item, spider):
author = item['author']
content = item['content'] self.fp.write(author + ':' + content + '\n') return item def close_spider(self, spider):
print('爬虫结束~~~')
self.fp.close() # 基于 mysql的管道存储
class MySqlChoutiproPipeline(object):
conn = None
cursor = None def open_spider(self, spider):
print('创建数据库连接~~')
# 建立数据库连接
self.conn = pymysql.Connection(host='127.0.0.1', port=3306, db='scrapy_db1', user='root', password='123',charset='utf8')
# pymysql.Connection(host='127.0.0.1', port=3306, user='root', password='123', db='spider', charset='utf8')
def process_item(self, item, spider):
authro = item['author']
content = item['content'] sql = 'insert into chouti values ("%s","%s")' %(authro ,content)
self.cursor = self.conn.cursor() try:
self.cursor.execute(sql)
self.conn.commit() # 提交 except Exception as e:
print(e)
self.conn.rollback() # 回滚 return item def close_spider(self,spider):
self.cursor.close()
self.conn.close()

python爬虫---js加密和混淆,scrapy框架的使用.的更多相关文章

  1. python爬虫入门(七)Scrapy框架之Spider类

    Spider类 Spider类定义了如何爬取某个(或某些)网站.包括了爬取的动作(例如:是否跟进链接)以及如何从网页的内容中提取结构化数据(爬取item). 换句话说,Spider就是您定义爬取的动作 ...

  2. Python 爬虫js加密破解(四) 360云盘登录password加密

    登录链接:https://yunpan.360.cn/mindex/login 这是一个md5 加密算法,直接使用 md5加密即可实现 本文讲解的是如何抠出js,运行代码 第一部:抓包 如图 第二步: ...

  3. Python 爬虫js加密破解(三) 百度翻译 sign

    第一步: 模拟抓包分析加密参数 第二步: 找到加密字段 调试出来的sign和抓取得到的数据一致,都是 275626.55195 第三部: 分析js加密方法 第四部:运行js代码: 仅供交流学习使用

  4. python爬虫入门(八)Scrapy框架之CrawlSpider类

    CrawlSpider类 通过下面的命令可以快速创建 CrawlSpider模板 的代码: scrapy genspider -t crawl tencent tencent.com CrawSpid ...

  5. python爬虫入门(九)Scrapy框架之数据库保存

    豆瓣电影TOP 250爬取-->>>数据保存到MongoDB 豆瓣电影TOP 250网址 要求: 1.爬取豆瓣top 250电影名字.演员列表.评分和简介 2.设置随机UserAge ...

  6. Python爬虫【实战篇】scrapy 框架爬取某招聘网存入mongodb

    创建项目 scrapy startproject zhaoping 创建爬虫 cd zhaoping scrapy genspider hr zhaopingwang.com 目录结构 items.p ...

  7. 网络爬虫第五章之Scrapy框架

    第一节:Scrapy框架架构 Scrapy框架介绍 写一个爬虫,需要做很多的事情.比如:发送网络请求.数据解析.数据存储.反反爬虫机制(更换ip代理.设置请求头等).异步请求等.这些工作如果每次都要自 ...

  8. 小白学 Python 爬虫(28):自动化测试框架 Selenium 从入门到放弃(下)

    人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...

  9. python网络爬虫(1)——安装scrapy框架的常见问题及其解决方法

    Scrapy是为了爬取网站数据而编写的一款应用框架,出名,强大.所谓的框架其实就是一个集成了相应的功能且具有很强通用性的项目模板. 其实在Linux和 Mac安装,就简单的pip命令即可: pip i ...

随机推荐

  1. [NOI2009][codevs1846]KCOJ0191]植物大战僵尸

    题目描述 Description Plants vs. Zombies(PVZ)是最近十分风靡的一款小游戏.Plants(植物)和Zombies(僵尸)是游戏的主角,其中Plants防守,而Zombi ...

  2. 一个小问题 关于 com.mysql.jdbc.PacketTooBigException: Packet for query is too large

    这个错本身就是应为传输的数据大于mysql的max_allowed_packet参数默认值造成的: 之前遇到这个问题,一直是改max_allowed_packet的值 ,做项目遇到这个错误改了好几次, ...

  3. Kdtree原理以及 vs Octree

    1. Kdtree原理 Kdtree是一种划分k维数据空间的数据结构,本质也是一颗二叉树,只不过每个节点的数据都是k维,当k=1时,就是图1所示的普通二叉树. 图1 1)Kdtree的建立 建立Kdt ...

  4. 4 实战CPU上下文

  5. Python 3.X 练习集100题 04

    输入某年某月某日,判断这一天是这一年的第几天? 方法1: import time test_time = input("请输入日期(年-月-日):") time_struct = ...

  6. 一文带你了解 Flink 的基本组件栈

    作为实时计算领域的佼佼者,Flink 的基本组件同样值得我们仔细研究. Flink 同样遵循着分层的架构设计理念,在降低系统耦合的同时,也为上层用户构建 Flink 应用提供了丰富且友好的接口. Fl ...

  7. Docker 常用命令速查手册

    记录一下docker的日常使用命令,本文主要针对linux + mac操作系统而言,window是否适用不太确定,谨慎使用 1. docker进程 docker进程启动.停止.重启,常见的三种case ...

  8. [原创] C#编程规范工具介绍

    1.目标 代码编写规范.整齐.整洁.可读. 无错误 无警告 2.排版 安装PowerCommands扩展 “工具”-“扩展管理库”,搜索安装. 设置选中Format document on save和 ...

  9. Spring中Bean命名源码分析

    Spring中Bean命名源码分析 一.案例代码 首先是demo的整体结构 其次是各个部分的代码,代码本身比较简单,不是我们关注的重点 配置类 /** * @Author Helius * @Crea ...

  10. 整合去除HTML 标签, 去除开头结尾换行,将连续空格合并为一个

    文本是从编辑器中读取数据,有的时候,可能不需要显示格式这个时候需要去除HTML 标签,只引入其中的文本 //去掉html标签 function removeHtmlTab(tab) { return ...