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的请求操 ...
随机推荐
- Scrapy使用问题整理(转载)
转载自:http://blog.csdn.net/heu07111121/article/details/50832999 最近尝试使用Scrapy进行数据抓取,并尝试在windows7 64位系 ...
- 使用ng-grid实现可配置的表格
使用Angularjs在带来方便的同时,也有一些遗憾:很多基于jquery或其它的组件,在angularjs中需要集成一下才能用得流畅.但是一些比较复杂的组件,集成起来的工作量相当大,比如说grid. ...
- 使用NoSQL Manager for MongoDBclient连接mongodb
1.安装NoSQL Manager for MongoDB 下载地址:http://www.mongodbmanager.com/download 2.打开client,选server-new mon ...
- NGUI 取ScrollView中遮罩区域4个点
用panel.localCorners而不是panel.finalClipRegion,Region还要再换算 首先通过ScrollView取panel,然后取Corners,它返回值代表4个点,映射 ...
- mybatis-config.xml文件详解
1. 属性列表 Mybatis的配置文件中包含了影响mybatis行为的设置(settings)和属性(properties)信息.文档的顶层结构如下: ·configuration 根配置 ·pro ...
- Atitit. Exception in thread "main" java.lang.Error: Unresolved compilation problem:
Atitit. Exception in thread "main" java.lang.Error: Unresolved compilation problem: 1.1. ...
- Atitit.swt 线程调用ui控件的方法
Atitit.swt 线程调用ui控件的方法 1 SwingUtilities.invokeLater1 2 display.asyncExec方法1 3 display.timerExec(500 ...
- bootstrip可视化布局
http://www.w3cschool.cc/try/bootstrap/layoutit/
- mybatis的foreach写用法
一.mybatis查询 public abstract List<Model> findByIds(@Param("ids")List<Integer> i ...
- Unity3D中简单的C#异步Socket实现
Unity3D中简单的C#异步Socket实现 简单的异步Socket实现..net框架自身提供了很完善的Socket底层.笔者在做Unity3D小东西的时候需要使用到Socket网络通信.于是决定自 ...