Python笔记⑤爬虫
爬虫的前奏
# 爬虫前奏
# 明确目的
# 找到数据对应的网页
# 分析网页的结果找到数据所在的标签位置
# 模拟HTTP请求,向服务器发送这个请求,获取到服务器返回给我们的HTML
# 用正则表达式提取我们要的数据(名字,人气)
http://longzhu.com/channels/lol?from=left
VSCode中调试代码:
用面向对象来构建爬虫
#断点调试
F5 启动
F10 单步运行
F5 跳断点
F11 进入某一个函数或对象的内部
鼠标悬停在变量上方后会出现变量的详细内容
爬虫分析流程:寻找到一个标签或者标识符,因为我们需要一个标签帮助“定位”抓取的信息
两个原则:
1.寻找哪个作为定位标识符,尽量选择具有唯一标识性的标签
2.尽量寻找接近于提取数据的标签。从需要查找的数据附近寻找
数据提取层级分析及原则
数据提取层级分析
为了分析 名字和人气 所以将它们认为一起的 然后找上层的闭合标签 即找父级标签不能用兄弟标签如video-title


圈红部分
#用正则表达式取得信息
匹配所有字符的方式:
\w\W; \s\S;
[\s\S]*?
[]表示或关系,*表示匹配0次到无限多次,
?表示非贪婪模式。表示只匹配到下个</div>就结束,不然一次就会匹配多个livecard-modal
圆括号表示组的概念,去除圆括号外部内容
通过正则表达式进行提取根节点下的名字

1,定义字典函数 anchor = {key:value},在这里 {'name':name,'number':number}
2,多个anchor需要存入一个列表中,因此定义多个字典的列表 anchors,即anchor单词的复数.
3,在anchors中插入anchor,即 anchors.append(anchor)
4,需要精简分析人数和名字,需要定义此类函数,需用refine函数表示
5,在入口go函数中增加self.__refine(param),这里的param则是anchors,
因此为 self.__refine(anchors)
数据精炼
(这个练习中)数据精炼目的
1.把换行符和空格去掉
2.把列表形式转换成单一字符串
def __refine(self,anchors):
l=lambda anchor:{
'name':anchor['name'][0].strip(),
'number':anchor['number][0]
}
return map(l, anchors)
#列表中每个字典元素的内部的name和number属性又都是一个列表,取出元素,列表就转换成了字符串
#内置函数strip可以去除字符串前后不需要的部分,默认值时空格和换行符(见【内置函数】)
案例总结
go是入口方法,里面展现了数据处理的流程步骤:
1. 提取内容(fetch)
2. 分析内容(analysis)
3. 精炼内容(refine)
4. 业务处理(如sort)
5. 展示方法(show)
这段代码直白,平铺直叙,可读性尚可
而最大的问题在于抵御业务变化的能力太差
如果要换一个不同的视频网站抓取,
代码就基本全部要改
如果要写中大型爬虫,
老师推荐BeautifulSoup库和Scrapy爬虫框架
对于框架,能不用就不用,因为研究框架要花费大量时间,
如果只是小项目,没有必要
应该从解决问题的角度出发
对于爬虫,还有反爬虫,和反反爬虫
而且爬虫只是手段,怎么处理分析爬到的数据同样重要
还有一个问题是ip被封,为了减少这种情况,把抓取的频率设置的小一点。
为了防止被封ip号 可以通过代理ip库来解决
注释的方法
类的注释和方法注释和模块注释是一样的
如: 
单行注释 在代码的上面写上注释 不推荐在代码后方注释

用字典映射代替switch case语句--(键值)
一,用原始的字典访问方式,不能解决default,也不能解决代码块的问题
1,键--对应case
2,值--对应的简单赋值语句
二,使用内置方法get(),第二个参数返回默认值(即key不存在时),解决默认值问题,但代码块问题也没能解决
三,使用函数式编程,解决case语句里面多个语句的问题
Switch case的解决方式

字典的解决方式

Python笔记⑤爬虫的更多相关文章
- Ubuntu下配置python完成爬虫任务(笔记一)
Ubuntu下配置python完成爬虫任务(笔记一) 目标: 作为一个.NET汪,是时候去学习一下Linux下的操作了.为此选择了python来边学习Linux,边学python,熟能生巧嘛. 前期目 ...
- 关于Python网络爬虫实战笔记③
Python网络爬虫实战笔记③如何下载韩寒博客文章 Python网络爬虫实战笔记③如何下载韩寒博客文章 target:下载全部的文章 1. 博客列表页面规则 也就是, http://blog.sina ...
- 关于Python网络爬虫实战笔记①
python网络爬虫项目实战笔记①如何下载韩寒的博客文章 python网络爬虫项目实战笔记①如何下载韩寒的博客文章 1. 打开韩寒博客列表页面 http://blog.sina.com.cn/s/ar ...
- python网络爬虫学习笔记
python网络爬虫学习笔记 By 钟桓 9月 4 2014 更新日期:9月 4 2014 文章文件夹 1. 介绍: 2. 从简单语句中開始: 3. 传送数据给server 4. HTTP头-描写叙述 ...
- Python网络爬虫笔记(五):下载、分析京东P20销售数据
(一) 分析网页 下载下面这个链接的销售数据 https://item.jd.com/6733026.html#comment 1. 翻页的时候,谷歌F12的Network页签可以看到下面 ...
- 第3次作业-MOOC学习笔记:Python网络爬虫与信息提取
1.注册中国大学MOOC 2.选择北京理工大学嵩天老师的<Python网络爬虫与信息提取>MOOC课程 3.学习完成第0周至第4周的课程内容,并完成各周作业 4.提供图片或网站显示的学习进 ...
- 第三次作业-MOOC学习笔记:Python网络爬虫与信息提取
1.注册中国大学MOOC 2.选择北京理工大学嵩天老师的<Python网络爬虫与信息提取>MOOC课程 3.学习完成第0周至第4周的课程内容,并完成各周作业 第一周 Requests库的爬 ...
- Python网络爬虫与信息提取笔记
直接复制粘贴笔记发现有问题 文档下载地址//download.csdn.net/download/hide_on_rush/12266493 掌握定向网络数据爬取和网页解析的基本能力常用的 Pytho ...
- 《精通python网络爬虫》笔记
<精通python网络爬虫>韦玮 著 目录结构 第一章 什么是网络爬虫 第二章 爬虫技能概览 第三章 爬虫实现原理与实现技术 第四章 Urllib库与URLError异常处理 第五章 正则 ...
随机推荐
- MyBatis Generator 超详细配置
想快速开始,请直接拉到最后,看整体配置. MyBatis Generator 是 MyBatis 提供的一个代码生成工具.可以帮我们生成 表对应的持久化对象(po).操作数据库的接口(dao).CRU ...
- Java“被迫”退出争霸,Python继续霸占首位!老牌程序员:我不服
2019年转眼已经接近尾声,如果盘点下2019年最火的语言,除了Python还能有谁?你心中的王者语言又是谁? 这一年Python风光无限 这一年JAVA走向右边 这一年,我们都很感慨,你呢? 关于P ...
- TXT文件也能挂木马
什么?TXT文件也能挂马?是的!TXT文件不仅有挂马的危险,而且有时候可能非常的危险!不过,严格说来,应该给这个所谓的"TXT"文件加个引号,因为它们是看起来是TXT文件,实则是隐 ...
- JAXB "有两个名为 "**" 的属性,类的两个属性具有相同名称 "**""解决方案
这里说的名称冲突指的是: JavaBean 属性名称与字段名称之间的名称冲突.在pojo类中的setter和getter方法会导致运行报错:Exception in thread "main ...
- 【原】接口mock作用
1.前后端 接口定义完成 并发开工 2.测试拿到mock接口 编写用例 3.mock接口 模拟异常服务器返回值 500 404 4.mock接口 模拟数据 不修改线上数据库
- 远程控制服务:配置sshd服务,密钥验证登陆
配置sshd服务 1.概述: SSH(Secure Shell)是一种能够以安全的方式提供远程登录的协议,也是目前远程管理 Linux 系统的首选方式.在此之前,一般使用 FTP 或 Telnet 来 ...
- Java:反射机制学习笔记
目录 一.反射机制 1.概述 2.优缺点 3.类加载的过程 二.获取Class对象的三种方式 1.Class.forName("全类名") 2.类名.class 3.对象.getC ...
- Cosmetic Bottles-Cosmetic Packaging Purpose: 5 Things
Packaging in the cosmetics industry is based on in-depth research. And how it helps to win the edge ...
- 操作word
package com.gwt.flow.task; import java.io.File; import java.io.FileInputStream; import java.io.FileN ...
- 【代码学习】PYTHON装饰器
一.装饰器 对原代码不修改的基础上完善代码 写代码要遵循开放封闭原则,虽然在这个原则是用的面向对象开发,但是也适用于函数式编程,简单来说,它规定已经实现的功能代码不允许被修改,但可以被扩展,即: 封闭 ...