当前位置: 首页 > news >正文

python3 简单爬虫

爬取虎牙直播分类页面的主播的头像,名字,人气

今天学习了python3爬虫,上课闲着无聊,自己写了一个爬虫

就顺着老师思路

爬了虎牙直播分类页面的主播,头像,名字,和人气

HuYaCateScrapy.py

 1 #!/usr/bin/python
 2 # -*- coding: utf-8 -*-
 3 
 4 """
 5  @ author:  happy_code
 6  @ contact: happy_code@foxmail.com
 7  @ software: 爬虫
 8  @ desc: 获取虎牙直播类页面主播名和人气,下载头像,并以名字和人气命名
 9 """
10 
11 import urllib
12 import requests
13 import re
14 import os
15 
16 
17 class Spider:
18 
19     # 目标url
20     url = ""
21 
22     # 保存地址
23     myrobot = "D:/scinfo/"
24 
25     # 获取的主播名和人气,头像
26     part = '<span class="txt">\s*' \
27         '\s*<span class="avatar fl">\s*' \
28             '\s*<img.*data-original="(.*?)".*>\s*' \
29             '\s*<i.*>(.*?)</i>\s*' \
30         '\s*</span>\s*' \
31                 '\s*<span.*><i.*></i><i class="js-num">(.*?)</i></span>\s*' \
32     '\s*</span>'
33 
34 
35     def __init__(self, url):
36         self.url = url
37 
38 
39     # 获取网站源代码
40     def gethtml(self):
41         res = requests.get(self.url)
42         res.encoding = "UTF-8"
43         return res.text
44 
45 
46     # 获得信息
47     def gethtmlinfo(self):
48         html = self.gethtml()
49         all = re.findall(self.part, html)
50         return all
51 
52 
53     # 下载图片,保存到myrobot下, 可以自定义文件名,哈哈重复下载保证成功(最多3次)
54     def downloadimg(self, url, name=None):
55         ok = 0
56         for i in range(3):
57             try:
58                 if name != None:
59                     path = self.myrobot + name + "." +url.split('.')[-1]
60                 else:
61                     path = self.myrobot + url.split('/')[-1]
62                 url = url.replace('\\', '')
63                 r = requests.get(url, timeout=30)
64                 r.raise_for_status()
65                 r.encoding = r.apparent_encoding
66                 if not os.path.exists(self.myrobot):
67                     os.makedirs(self.myrobot)
68                 if not os.path.exists(path):
69                     with open(path, 'wb') as f:
70                         f.write(r.content)
71                         f.close()
72                         print(path + ' 文件保存成功')
73                         ok = 1
74                 else:
75                     print('文件已经存在')
76             except:
77                 print("异常")
78                 continue
79 
80             if ok == 1:
81                 break
82 
83     # 保存信息
84     def saveinfo(self, data):
85         for i in data:
86             s.downloadimg(i[0], i[1]+"-"+str(i[2]));
87 
88 
89 if __name__ == "__main__":
90     # lol分类的url
91     s = Spider("https://www.huya.com/g/lol")
92     data = s.gethtmlinfo()
93     s.saveinfo(data)
View Code

只需要在main中给出分类页面的url即可

然后呢,修改一下保存路径就好了

结果如下:

 

 

转载于:https://www.cnblogs.com/haoabcd2010/p/9444067.html

相关文章:

  • HAP将新的页面加入到菜单
  • 常用的CSS各类属性
  • 从计算机知识到落地能力,你欠缺了什么?
  • 阿里云王牌架构师杨曦:N多环境N多应用个性配置管理如何从混乱到简单?
  • 小程序开发中的那些坑
  • Intellij idea 快捷键持续更新
  • 常用加密算法概述
  • CSS基础2-盒子模型、定位、浮动
  • 集群架构(1)
  • python全栈开发 * background 定位 z-index * 180813
  • Prism中命令可用性无法自动刷新
  • shell入门基础常见命令及用法
  • 高可用,高并发
  • SqlServer日期时间格式转换
  • Go to sleep
  • python3.6+scrapy+mysql 爬虫实战
  • [译] React v16.8: 含有Hooks的版本
  • 3.7、@ResponseBody 和 @RestController
  • Android框架之Volley
  • Android路由框架AnnoRouter:使用Java接口来定义路由跳转
  • bootstrap创建登录注册页面
  • CEF与代理
  • GitUp, 你不可错过的秀外慧中的git工具
  • iBatis和MyBatis在使用ResultMap对应关系时的区别
  • Java IO学习笔记一
  • Java 内存分配及垃圾回收机制初探
  • JavaScript实现分页效果
  • js中的正则表达式入门
  • Mac 鼠须管 Rime 输入法 安装五笔输入法 教程
  • miaov-React 最佳入门
  • - 概述 - 《设计模式(极简c++版)》
  • 区块链技术特点之去中心化特性
  • 使用阿里云发布分布式网站,开发时候应该注意什么?
  • 微信开放平台全网发布【失败】的几点排查方法
  • 做一名精致的JavaScripter 01:JavaScript简介
  • PostgreSQL 快速给指定表每个字段创建索引 - 1
  • 进程与线程(三)——进程/线程间通信
  • 你学不懂C语言,是因为不懂编写C程序的7个步骤 ...
  • #在线报价接单​再坚持一下 明天是真的周六.出现货 实单来谈
  • (16)UiBot:智能化软件机器人(以头歌抓取课程数据为例)
  • (51单片机)第五章-A/D和D/A工作原理-A/D
  • (附源码)springboot家庭财务分析系统 毕业设计641323
  • (附源码)计算机毕业设计SSM疫情下的学生出入管理系统
  • (论文阅读40-45)图像描述1
  • (每日持续更新)jdk api之FileReader基础、应用、实战
  • (转)setTimeout 和 setInterval 的区别
  • ***监测系统的构建(chkrootkit )
  • .net core Swagger 过滤部分Api
  • .net mvc actionresult 返回字符串_.NET架构师知识普及
  • .Net 路由处理厉害了
  • .NET/C# 编译期间能确定的相同字符串,在运行期间是相同的实例
  • .NET企业级应用架构设计系列之结尾篇
  • [ 云计算 | AWS 实践 ] Java 如何重命名 Amazon S3 中的文件和文件夹
  • [1] 平面(Plane)图形的生成算法
  • [Android]使用Android打包Unity工程