欢迎光临散文网 会员登陆 & 注册

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

2023-06-27 14:22 作者:我会超强的  | 我要投稿

樵夫老师

动态加载数据Web请求原理 2023-4-11 00:11:06


04 Web请求全过程解析(重点必看)-14 P4 - 05:48


分两次获取数据:第一次获取主页HTML框架,第二次申请纯数据进行填充


案例:豆瓣电影分类排行榜 - 喜剧片

https://movie.douban.com/typerank?type_name=%E5%96%9C%E5%89%A7&type=24&interval_id=100:90&action=

-----------------------------


06 协议简单了解-16 P6 - 02:11


HTTP协议


06 协议简单了解-16 P6 - 11:40


查看requests的请求头

如何用requests发送post请求,并直接利用json()方法获取字典格式的json数据

get请求的数据可以直接放到url上,post请求通常要利用data关键字传输数据字典

带参数的get请求处理

四种数据解析方式

2023-4-12 00:51:46


02 01 正则表达式 元字符 1-18 P12 - 02:26


正则在线测试网站

https://tool.oschina.net/regex

匹配11位电话号码

非贪婪模式细节讲解


02 04 正则表达式 贪婪和惰性-21 P15 - 05:57




02 04 正则表达式 贪婪和惰性-21 P15 - 10:25


满足一个正则 我就返回结果 并继续往后找满足匹配条件的结果

--------------------------------

re模块

re.findall('正则表达式',匹配对象源的字符串)

结果是列表


03 01 初识re模块-22 P16 - 00:36


re.finditer('正则表达式',匹配对象源的字符串)

结果是迭代器,需要用循环取出(此时变成Match对象)再用group()方法


03 01 初识re模块-22 P16 - 03:08


\d+ 表示匹配至少一个数字

re.search('正则表达式',匹配对象源的字符串)

找到第一个符合查找要求的结果,返回结果是Match对象,需要用group()方法

re.match('正则表达式',匹配对象源的字符串)

返回结果是Match对象,需要用group()方法

预加载


03 01 初识re模块-22 P16 - 09:04


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

Re提取分组数据


03 02 Re提取分组数据-23 P17 - 02:11


需要找时间练习一个这些正则操作 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>.*?)&nbsp.*?'

'<br>(?P<year>.*?)&nbsp.*?'

'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)


04 01 利用抓取豆瓣top250数据-24 P18 - 21:23


html基本语法

css基础语法


06 Css选择器语法规则 剪切完毕-29 P22 - 20:33



-------------------------------

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



01 Javascript入门-1 (1) P80 - 11:10


以往用户注册的流程:

会将用户信息打包成from表单,再post给服务器验证。服务器在用户注册过程就需要来回多次验证,给服务器造成很大的资源浪费

  1. js可以获取html里面的内容
  2. 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


01 Javascript入门-1 (2) P81 - 12:06


number 数据类型

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

js 数据类型转化

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

js 的布尔值

js 的对象

  • Array() 相当于新建一个列表对象

三元表达式

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

字符串分割


01 Javascript入门-1 (4) P83 - 12:36


字符串操作

  • js 变量 使用前必须声明

js中的条件判断


01 Javascript入门-1 (5) P84 - 18:07


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

if ... else if ... else

switch

  • 用 break 中断后续 穿透

三、JS中的循环语句


01 Javascript入门-1 (7) P86 - 00:02


while循环

do while循环

for 循环


01 Javascript入门-1 (7) P86 - 10:17


  • let 声明临时变量

for 循环的第二种写法

forEach ( 函数()) 写法

map() 方法补充 2023-4-28 22:12:58


四、js中的数组和对象


01 Javascript入门-1 (8) P87 - 00:02


对象

五、 js中的函数(重点)


01 Javascript入门-1 (8) P87 - 12:10




2023-4-28 12:02:17

前端的坑

  • 动态类型一时爽,重构代码火葬场
  • 总会把一个函数直接赋值给一个变量
  • 函数的调用
  • 相当于定义了一个 $( 参数) 的函数

不用起名字的 自运行函数

  • 相当于没有命名的函数


01 Javascript入门-1 (9) P88 - 14:23


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


函数return问题

let 局部变量

var 全局变量

const 不可更改变量













-----------------------------

md5库运算


01 各种加密逻辑 (1) P89 - 12:57





利用urllib的encode

对url进行编码


01 各种加密逻辑 (3) P91 - 04:07


url反解成中文信息


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

分享到微博请遵守国家法律