花12880买的【python爬虫1000集】从基础到(Scrapy+js逆向

樵夫老师
动态加载数据Web请求原理 2023-4-11 00:11:06
分两次获取数据:第一次获取主页HTML框架,第二次申请纯数据进行填充


案例:豆瓣电影分类排行榜 - 喜剧片
https://movie.douban.com/typerank?type_name=%E5%96%9C%E5%89%A7&type=24&interval_id=100:90&action=
-----------------------------
HTTP协议


查看requests的请求头

如何用requests发送post请求,并直接利用json()方法获取字典格式的json数据
get请求的数据可以直接放到url上,post请求通常要利用data关键字传输数据字典

带参数的get请求处理


四种数据解析方式

2023-4-12 00:51:46
正则在线测试网站
https://tool.oschina.net/regex


匹配11位电话号码

非贪婪模式细节讲解


满足一个正则 我就返回结果 并继续往后找满足匹配条件的结果
--------------------------------
re模块
re.findall('正则表达式',匹配对象源的字符串)
结果是列表
re.finditer('正则表达式',匹配对象源的字符串)
结果是迭代器,需要用循环取出(此时变成Match对象)再用group()方法
\d+ 表示匹配至少一个数字


re.search('正则表达式',匹配对象源的字符串)
找到第一个符合查找要求的结果,返回结果是Match对象,需要用group()方法


re.match('正则表达式',匹配对象源的字符串)
返回结果是Match对象,需要用group()方法

预加载
预加载正则的变量.findall(匹配源对象)


Re提取分组数据



需要找时间练习一个这些正则操作 2023-4-12 01:13:12
---------------------------------
P18 实战 2023-4-25 22:10:16
https://movie.douban.com/top250
数据全在url里面


import re
import requests
url='https://movie.douban.com/top250'
headers={
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36'
}
response=requests.get(url,headers=headers).text
obj = re.compile('<div class="item">.*?<span class="title">(?P<title>.*?)</span>.*?'
'<p class="">.*?导演:(?P<editor>.*?) .*?'
'<br>(?P<year>.*?) .*?'
'property="v:average">(?P<score>.*?)</span>.*?'
'content="10.0">.*?<span>(?P<comment>.*?)</span>',re.S)
result = obj.finditer(response)
for item in result:
title=item.group('title')
editor=item.group('editor')
year=item.group('year').strip()
score=item.group('score')
comment=item.group('comment')
print(title,editor,year,score,comment)
html基本语法

css基础语法

-------------------------------
javascript 入门 2023-4-25 22:39:14


以往用户注册的流程:
会将用户信息打包成from表单,再post给服务器验证。服务器在用户注册过程就需要来回多次验证,给服务器造成很大的资源浪费
- js可以获取html里面的内容
- js可以操纵页面上的一些内容
由此可以实现的功能:
- 数据加密
- 特效功能
后续node.js 可以作为一个完整的后端服务
补充:Node.js 是一个基于Chrome V8 引擎的JS的运行环境
传统web开发,前端用js写 后端服务器用 ruby java 或 php, Node.js出来以后 js就可以前后端通吃
- js可以操作页面上的数据,可以在浏览器上进行数据校验,比如核对邮箱格式是否正确,可以减轻服务器的压力
- 运行在浏览器上,依赖浏览器存在的

html的注释
- <!-- 内容 --> 多行注释
js的注释
- //
- /* */

在html中引入js代码的两种方式
- 直接写在script标签里面
- 通过src(source 来源)属性 添加js文件路径来引入

js 和 html执行是按顺序进行的 加载有先后顺序,不同顺序 执行效果不同
js的基本数据类型

- null 是空对象
- undefined 没有定义的东西
------------------------
js的基本语法 2023-4-28 11:27:30
number 数据类型

- 在js中 整数和浮点数 都是number类型
- 声明 但没给值就调用 返回结果是undefined
- alert() 方法的作用
- console.log() 方法的作用 向控制台输出打印结果 等效 python 中的 print()
js 数据类型转化

- 字符串拼接
- 字符串转整型 parseInt() parseFloat()
- 数字转字符串 点toString() 两种方式

js 的布尔值


js 的对象

- Array() 相当于新建一个列表对象
三元表达式


i++ 与 ++i 的区别 以及一个表达式问题

字符串分割

字符串操作


- js 变量 使用前必须声明
js中的条件判断

- js中 每条语句结束建议写上分号 不写也不会出错
- if 条件用() 小括号 执行语句放在{ } 花括号里面,括号内可以随意填写缩进 空格等
- 因此 有混淆(缩进混乱)和压缩 概念

if ... else if ... else

switch

- 用 break 中断后续 穿透

三、JS中的循环语句
while循环

do while循环

for 循环


- let 声明临时变量
for 循环的第二种写法


forEach ( 函数()) 写法
map() 方法补充 2023-4-28 22:12:58

四、js中的数组和对象


对象

五、 js中的函数(重点)

2023-4-28 12:02:17


前端的坑
- 动态类型一时爽,重构代码火葬场
- 总会把一个函数直接赋值给一个变量

- 函数的调用

- 相当于定义了一个 $( 参数) 的函数
不用起名字的 自运行函数

- 相当于没有命名的函数

利用闭包和自运行函数 解决变量冲突问题
函数return问题


let 局部变量
var 全局变量
const 不可更改变量

-----------------------------
md5库运算

利用urllib的encode
对url进行编码

url反解成中文信息
