python3 简单爬虫
爬取虎牙直播分类页面的主播的头像,名字,人气
今天学习了python3爬虫,上课闲着无聊,自己写了一个爬虫
就顺着老师思路
爬了虎牙直播分类页面的主播,头像,名字,和人气
HuYaCateScrapy.py
#!/usr/bin/python
# -*- coding: utf-8 -*- """
@ author: happy_code
@ contact: happy_code@foxmail.com
@ software: 爬虫
@ desc: 获取虎牙直播类页面主播名和人气,下载头像,并以名字和人气命名
""" import urllib
import requests
import re
import os class Spider: # 目标url
url = "" # 保存地址
myrobot = "D:/scinfo/" # 获取的主播名和人气,头像
part = '<span class="txt">\s*' \
'\s*<span class="avatar fl">\s*' \
'\s*<img.*data-original="(.*?)".*>\s*' \
'\s*<i.*>(.*?)</i>\s*' \
'\s*</span>\s*' \
'\s*<span.*><i.*></i><i class="js-num">(.*?)</i></span>\s*' \
'\s*</span>' def __init__(self, url):
self.url = url # 获取网站源代码
def gethtml(self):
res = requests.get(self.url)
res.encoding = "UTF-8"
return res.text # 获得信息
def gethtmlinfo(self):
html = self.gethtml()
all = re.findall(self.part, html)
return all # 下载图片,保存到myrobot下, 可以自定义文件名,哈哈重复下载保证成功(最多3次)
def downloadimg(self, url, name=None):
ok = 0
for i in range(3):
try:
if name != None:
path = self.myrobot + name + "." +url.split('.')[-1]
else:
path = self.myrobot + url.split('/')[-1]
url = url.replace('\\', '')
r = requests.get(url, timeout=30)
r.raise_for_status()
r.encoding = r.apparent_encoding
if not os.path.exists(self.myrobot):
os.makedirs(self.myrobot)
if not os.path.exists(path):
with open(path, 'wb') as f:
f.write(r.content)
f.close()
print(path + ' 文件保存成功')
ok = 1
else:
print('文件已经存在')
except:
print("异常")
continue if ok == 1:
break # 保存信息
def saveinfo(self, data):
for i in data:
s.downloadimg(i[0], i[1]+"-"+str(i[2])); if __name__ == "__main__":
# lol分类的url
s = Spider("https://www.huya.com/g/lol")
data = s.gethtmlinfo()
s.saveinfo(data)
只需要在main中给出分类页面的url即可
然后呢,修改一下保存路径就好了
结果如下:

python3 简单爬虫的更多相关文章
- python3简单爬虫
最近在抽空学了一下python,于量就拿爬是练了下手,不得不说python的上手非常简单.在网上找了一下,大都是python2的帖子,于是随手写了个python3的.代码非常简单就不解释了,直接贴代码 ...
- Python3简单爬虫抓取网页图片
现在网上有很多python2写的爬虫抓取网页图片的实例,但不适用新手(新手都使用python3环境,不兼容python2), 所以我用Python3的语法写了一个简单抓取网页图片的实例,希望能够帮助到 ...
- python3+ 简单爬虫笔记
import urllib.request import re def getHtml(url): html = urllib.request.urlopen(url).read() return h ...
- Python3网络爬虫(1):利用urllib进行简单的网页抓取
1.开发环境 pycharm2017.3.3 python3.5 2.网络爬虫的定义 网络爬虫,也叫网络蜘蛛(web spider),如果把互联网比喻成一个蜘蛛网,spider就是一只在网上爬来爬去的 ...
- python3实现简单爬虫功能
本文参考虫师python2实现简单爬虫功能,并增加自己的感悟. #coding=utf-8 import re import urllib.request def getHtml(url): page ...
- 【python3两小时快速入门】入门笔记03:简单爬虫+多线程爬虫
作用,之间将目标网页保存金本地 1.爬虫代码修改自网络,目前运行平稳,博主需要的是精准爬取,数据量并不大,暂未加多线程. 2.分割策略是通过查询条件进行分类,循环启动多条线程. 1.单线程简单爬虫(第 ...
- Python3.x爬虫教程:爬网页、爬图片、自己主动登录
林炳文Evankaka原创作品. 转载请注明出处http://blog.csdn.net/evankaka 摘要:本文将使用Python3.4爬网页.爬图片.自己主动登录.并对HTTP协议做了一个简单 ...
- python网络爬虫,知识储备,简单爬虫的必知必会,【核心】
知识储备,简单爬虫的必知必会,[核心] 一.实验说明 1. 环境登录 无需密码自动登录,系统用户名shiyanlou 2. 环境介绍 本实验环境采用带桌面的Ubuntu Linux环境,实验中会用到桌 ...
- Python3 网络爬虫(请求库的安装)
Python3 网络爬虫(请求库的安装) 爬虫可以简单分为几步:抓取页面,分析页面和存储数据 在页面爬取的过程中我们需要模拟浏览器向服务器发送请求,所以需要用到一些python库来实现HTTP的请求操 ...
随机推荐
- python代码 构建验证码
1.python代码编写 (随机验证码): #coding: utf-8 import Image, ImageDraw, ImageFont, ImageFilter import string, ...
- python-循环(loop)-for循环
for 循环 for every_letter in 'Hello world': print(every_letter) 输出结果为 把 for 循环所做的事情概括成一句话就是:于...其中的每一个 ...
- Java并发编程(五):Java线程安全性中的对象发布和逸出
发布(Publish)和逸出(Escape)这两个概念倒是第一次听说,不过它在实际当中却十分常见,这和Java并发编程的线程安全性就很大的关系. 什么是发布?简单来说就是提供一个对象的引用给作用域之外 ...
- zookeeper(二):linux centos下安装zookeeper(单机和集群)
下载 http://zookeeper.apache.org/releases.html 解压 tar –zxvf zookeeper-3.4.6.tar.gz 解压文件到"/usr/loc ...
- 点滴积累【C#】---TreeView读取数据库
效果: 数据库: 思路: 利用for遍历,然后创建父节点,再根据父节点创建出子节点. 代码: using System; using System.Collections.Generic; using ...
- python-sqlite3之占位符
The sqlite3 module supports two kinds of placeholders: question marks (qmark style) and named placeh ...
- KVC之-(id)valueForKey:(NSString *)key的实现原理与验证
KVC之-(id)valueForKey:(NSString *)key的实现原理与验证 2.-(id)valueForKey:(NSString *)key的实现原理与验证; #功能:使用一个字符串 ...
- java调用c#开发的webservice
使用jdk自带的wsimport工具生成代理类 c:\Program Files\Java\jdk1..0_121\bin>wsimport -keep -encoding utf- -d d: ...
- 跟着百度学PHP[14]-PDO-优化驱动
使用方法设置预定义变量 PDO的方法/属性 PDO::beginTransaction — Initiates a transaction PDO::commit — Commits a transa ...
- 2PC&3PC
在分布式系统中,每一个机器节点虽然都能够明确地知道自己在进行实物操作过程中的结果是成功或失败,但却无法直接获取到其他分布式节点的操作结果.为了保持实物处理的ACID特性,就需要引入一个称为" ...