一、分析抓取目的确定抓取页面
 
#爬取主播人气排行
二、整理爬虫常规思路
 
爬虫前奏

明确目的
找到数据对应的网页
分析网页的结构找到数据所在的标签位置 模拟 HTTP 请求, 向服务器发送这个请求, 获取到服务器返回给我们的HTML
用正则表达式提取我们要的数据(名字,人数)
三、 VSCode中调试代码
 
F5 启动 和vs 调试一样
 BeautifulSoup , Scrapy
爬虫、 反爬虫、反反爬虫
ip 封
代理 ip库
五、数据提取层级分析及原则三、正则分析HTML、正则分析获取名字和人数
from urllib import request
import re
#断点调试 有坑 7i
class Spider():
url = 'https://www.panda.tv/cate/lol'
root_pattern ='<div class="video-info">([\s\S]*?)</div>'
name_pattern = '</li>([\s\S]*?)</span>'
number_pattern = '<span class="video-number">([\s\S]*?)</span>' def __fetch_content(self):
r = request.urlopen(Spider.url)
#bytes
htmls = r.read()
htmls = str(htmls,encoding='utf-8')
return htmls def __analysis(self,htmls):
root_html = re.findall(Spider.root_pattern, htmls)
anchors = []
for html in root_html:
name = re.findall(Spider.name_pattern, html)
number = re.findall(Spider.number_pattern, html)
anchor = {'name':name,'number':number}
anchors.append(anchor)
# print(anchors[0])
return anchors def __refine(self, anchors):
l = lambda anchor:{
'name':anchor['name'][0].strip(),
'number':anchor['number'][0]
}
return map(l,anchors) def go(self):
htmls = self.__fetch_content()
anchors = self.__analysis(htmls)
anchors =list(self.__refine(anchors))
print(anchors[0]) s = Spider()
s.go() 结果:
{'name': 'LOL丶摇摆哥', 'number': '26.8万'}
八、 数据精炼、 sorted 排序
 
from urllib import request
import re
#断点调试 坑 7i
class Spider():
url = 'https://www.panda.tv/cate/lol'
root_pattern ='<div class="video-info">([\s\S]*?)</div>'
name_pattern = '</li>([\s\S]*?)</span>'
number_pattern = '<span class="video-number">([\s\S]*?)</span>' # 获取数据的页面
def __fetch_content(self):
r = request.urlopen(Spider.url)
#bytes
htmls = r.read()
htmls = str(htmls,encoding='utf-8')
return htmls # 从页面上抓取数据
def __analysis(self,htmls):
root_html = re.findall(Spider.root_pattern, htmls)
anchors = []
for html in root_html:
name = re.findall(Spider.name_pattern, html)
number = re.findall(Spider.number_pattern, html)
anchor = {'name':name,'number':number}
anchors.append(anchor)
# print(anchors[0])
return anchors # 数据取杂质(空格换行)strip() 字符串去空格换行
def __refine(self, anchors):
l = lambda anchor:{
'name':anchor['name'][0].strip(),
'number':anchor['number'][0]
}
return map(l,anchors) #map类 对字典每一个序列进行l这个函数 # 对抓取的数据进行排序 reverse=True 倒序
def __sort(self, anchors):
anchors = sorted(anchors, key=self.__sort_seed, reverse=True)
return anchors # 给 key 写的函数 说明用那个进行排序
def __sort_seed(self, anchors):
r = re.findall('\d*', anchors['number'])
number = float(r[0])
if '万' in anchors['number']:
number *= 10000
return number # 显示排名
def __show(self, anchors):
for rank in range(0,len(anchors)):
print('rank '+ str(rank +1)+' : '+anchors[rank]['name']+' '+anchors[rank]['number']+'人') # 主程序
def go(self):
htmls = self.__fetch_content()
anchors = self.__analysis(htmls)
anchors =list(self.__refine(anchors))
print(anchors[0])
anchors= self.__sort(anchors)
self.__show(anchors[:20]) s = Spider()
s.go() 结果:
{'name': 'LOL丶摇摆哥', 'number': '20.2万'}
rank 1 : 贾克虎丶虎神 96.9万人
rank 2 : LOL丶摇摆哥 20.2万人
rank 3 : LPL熊猫官方直播 12.1万人
rank 4 : WUCG官方直播平台 8.4万人
rank 5 : 温州丶黄小明 5.1万人
rank 6 : 暴君aa 4.6万人
rank 7 : 顺顺套路王 3.1万人
rank 8 : 火苗OB解说 2.5万人
rank 9 : 兰晨丶 1.1万人
rank 10 : 海洋OvO 1.9万人
rank 11 : 小马哥玩盖伦 1.6万人
rank 12 : 牛老师丶 1.5万人
rank 13 : Riot国际赛事直播间 1.5万人
rank 14 : 小白Mini 7361人
rank 15 : 一个很C的稻草人 7223人
rank 16 : 抗寒使者 4976人
rank 17 : 小麦子鲜奶油 4902人
rank 18 : 祝允儿 4574人
rank 19 : 请叫我大腿岩丶 4201人
rank 20 : 李小青ZJ 3838人

Python(十一) 原生爬虫的更多相关文章

  1. Python3(十一) 原生爬虫

    一.爬虫实例 1.原理:文本分析并提取信息——正则表达式. 2.实例目的:爬取熊猫TV某个分类下面主播的人气排行 分析网站结构 操作:F12查看HTML信息,Ctrl+Shift+C鼠标选取后找到对应 ...

  2. Python 开发轻量级爬虫08

    Python 开发轻量级爬虫 (imooc总结08--爬虫实例--分析目标) 怎么开发一个爬虫?开发一个爬虫包含哪些步骤呢? 1.确定要抓取得目标,即抓取哪些网站的哪些网页的哪部分数据. 本实例确定抓 ...

  3. Python 开发轻量级爬虫07

    Python 开发轻量级爬虫 (imooc总结07--网页解析器BeautifulSoup) BeautifulSoup下载和安装 使用pip install 安装:在命令行cmd之后输入,pip i ...

  4. Python 开发轻量级爬虫06

    Python 开发轻量级爬虫 (imooc总结06--网页解析器) 介绍网页解析器 将互联网的网页获取到本地以后,我们需要对它们进行解析才能够提取出我们需要的内容. 也就是说网页解析器是从网页中提取有 ...

  5. Python 开发轻量级爬虫05

    Python 开发轻量级爬虫 (imooc总结05--网页下载器) 介绍网页下载器 网页下载器是将互联网上url对应的网页下载到本地的工具.因为将网页下载到本地才能进行后续的分析处理,可以说网页下载器 ...

  6. Python 开发轻量级爬虫04

    Python 开发轻量级爬虫 (imooc总结04--url管理器) 介绍抓取URL管理器 url管理器用来管理待抓取url集合和已抓取url集合. 这里有一个问题,遇到一个url,我们就抓取它的内容 ...

  7. Python 开发轻量级爬虫03

    Python 开发轻量级爬虫 (imooc总结03--简单的爬虫架构) 现在来看一下一个简单的爬虫架构. 要实现一个简单的爬虫,有哪些方面需要考虑呢? 首先需要一个爬虫调度端,来启动爬虫.停止爬虫.监 ...

  8. Python 开发轻量级爬虫02

    Python 开发轻量级爬虫 (imooc总结02--爬虫简介) 爬虫简介 首先爬虫是什么?它是一段自动抓取互联网信息的程序. 什么意思呢? 互联网由各种各样的的网页组成,每一个网页都有对应的url, ...

  9. Python 开发轻量级爬虫01

    Python 开发轻量级爬虫 (imooc总结01--课程目标) 课程目标:掌握开发轻量级爬虫 为什么说是轻量级的呢?因为一个复杂的爬虫需要考虑的问题场景非常多,比如有些网页需要用户登录了以后才能够访 ...

随机推荐

  1. 简单搭建zookeeper集群分布式/伪分布式

    分布式搭建 一.下载zookeeper安装包 自行下载:我用的是 zookeeper-3.5.4-beta.tar.gz 二.环境准备 1. 我的虚拟机自带的java是1.7的,这个版本要求java1 ...

  2. EularProject 42:单词解码出来的三角形数

    Coded triangle numbers Problem 42 The nth term of the sequence of triangle numbers is given by, tn = ...

  3. mysql-数据库维护

    一.备份数据 1.使用mysqldump命令备份:前提:musql的版本必须一致. mysqldump -u username -p  --default -character-set=gbk dbn ...

  4. vim visual操作备忘

    visual模式下: jkl选中行 "+y 复制选中行

  5. django uWSGI nginx搭建一个web服务器 确定可用

    网上的找了很多篇 不知道为什么不行,于是自己搭建了一个可用的Web 大家可按步骤尝试 总结下基于uwsgi+Nginx下django项目生产环境的部署 准备条件: .确保有一个能够用runserver ...

  6. 36.创建模板mylist

    node.h #pragma once //创建模板 template <class T> class Node { public: T t;//数据 Node *pNext;//指针域 ...

  7. 版本控制器:SVN(精讲)

    版本控制器:SVN 1 开发中的实际问题 1.1 小明负责的模块就要完成了,就在即将Release之前的一瞬间,电脑突然蓝屏,硬盘光荣牺牲!几个月来的努力付之东流——需求之一:备份! 1.2 这个项目 ...

  8. java9新特性-2-安装与官网说明

    1.jdk 9的下载 http://www.oracle.com/technetwork/java/javase/downloads/index-jsp-138363.html         下载安 ...

  9. WebSocket handshake: Unexpected response code: 404

    在执行    http://www.cnblogs.com/best/p/5695570.html  提供的 websocket时候, 报错了 “WebSocket handshake: Unexpe ...

  10. 5、Go if else 条件判断

    package main import "fmt" func main(){ //注:在Go里面没有三元表达式”?:”,所以你只能使用条件判断语句. //示例一 if 7%2==0 ...