动态爬取思路讲解

1.简单的爬虫只需要访问网站搜索栏处的url,就可以在开发者工具(F12)处,利用正则表达式、Xpath、css等进行定位并抓取数据;

2.虎牙星秀页面不同于简单的网页,随时都在更新,但搜索栏处的url并未改变,所以它是一个动态加载(ajax)的页面;

3.需要在开发者工具界面处对network进行抓包,提取真正给网站页面提供图片链接的url;

4.通过抓包的url,会发现打开的是一个json格式的文本,在里面可以抓取到需要的数据以及链接;

5.最后我们就可以打开Pycharm,活动小手指,敲击小键盘啦!!!

(不要太忘情,打扰到身边的小伙伴哦~)

导入需要的python模块

通过pip install 模块名,本人使用的是Anaconda Prompt导入

import requests

import os

import json

import time

from random import randint

使用Python导入的话比较麻烦,所以强烈建议大家使用Anaconda导入模块。

通过爬虫获得的主播图片

在Pycharm中所敲的代码

# -*- coding: utf-8 -*-

# @Date: 2020/8/12 16:17

# @Author: Ricky Rau

import requests

import os

import json

import time

from random import randint

def main():

url = 'https://www.huya.com/cache.php'

headers = {

'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36'

}

for i in range(5):

page_num = str(i)

params = {

'm': 'LiveList',

'do': 'getLiveListByPage',

'gameId': '1663',

'tagAll': '0',

'page': page_num

}

time.sleep(randint(1,5))

img_lists = getData(url, params, headers)

img_content = get_img_content(img_lists)

saveData(img_lists, img_content)

def getData(url, params, headers):

json_text = requests.get(url=url, params=params, headers=headers).text

jsonObj = json.loads(json_text) #解码的过程,把乱码变成了中文

datas = jsonObj['data']['datas']

#print(datas)

img_lists = []

for data in datas:

img = []

nick = data['nick']

screenshot = data['screenshot']

img.append(nick)

img.append(screenshot)

img_lists.append(img)

return img_lists

def get_img_content(img_lists):

headers = {

'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36'

}

img_content = []

for i in range(len(img_lists)):

src = img_lists[i][1]

content = requests.get(url=src, headers=headers).content

print('解析完毕第{}张图片!'.format(i))

img_content.append(content)

return img_content

def saveData(img_lists, img_content):

if not os.path.exists('./xingxiu'):

os.mkdir('./xingxiu')

for i in range(len(img_lists)):

img_name = img_lists[i][0] + '.jpg'

img_path = './xingxiu/' + img_name

with open(img_path, 'wb') as fp:

fp.write(img_content[i])

if __name__ == '__main__':

main()

代码中涉及的模块详解

模块

用法

requests

用来获取网页源代码

json

把json格式的文本变为python可以处理的文本

os

创建一个存放图片的文件夹

time

利用time.sleep()方法给程序设置延迟,防止被网站检测到

random.randint

设置随机睡眠时间,单位为秒

Python 之禅

美比丑好,明比涩强。简胜于繁,繁强于难。

平言莫绕,宜疏莫密。行文如水,易懂为王。

勿提特例,皆循此规。实虽胜纯,识错必究。

若需留证,亦要言明。不明其理,追根问底。

必有一法,可解谜题。汝非龟叔,求之故难。

立足当下,行必有方。行难言喻,所思欠妥。

行易言表,所思可嘉。名正易识,善莫大焉!

python怎么爬虎牙_Python爬虫:爬取虎牙星秀主播图片相关推荐

  1. python怎么爬虎牙_Python爬虫爬取虎牙数据!谁才是虎牙第一主播!

    首先打开我们所需要爬取的网站,这里我们挑选的是虎牙直播. 我们今天所爬取的数据就是直播名,直播地址,直播的人,观看数以及直播的类别,如下图所示 第一步关于直播的类别,从第一张图片我们可以看到在右边有直 ...

  2. python网络爬图_Python爬虫爬图片需要什么

    Python爬虫爬图片需要什么?下面用两种方法制作批量爬取网络图片的方法: 第一种方法:基于urllib实现 要点如下: 1.url_request = request.Request(url) 2. ...

  3. Python爬虫:爬取某鱼颜值主播图片并保存到本地升级版!

    一.准备 1.创建scrapy项目 scrapy startproject douyucd douyuscrapy genspider spider "www.douyu.com" ...

  4. python爬斗鱼直播房间名和主播名_斗鱼爬虫,爬取颜值频道的主播图片和名字

    在斗鱼的界面中,如果滚动条没有拉下去,那么下面的图片都只是一条鱼的图片,所以要使浏览器自动拉动滚动条,可以用到python的selenium库, 1.配置浏览器 要使用selenium,还需要安装 c ...

  5. python基金预测分析_Python爬虫抓取基金数据分析、预测系统设计与实现

    版权声明:本文为博主原创文章,如果转载请给出原文链接:http://doofuu.com/article/4156231.html 目前在开发一款基于Python的基金爬取.分析.预测系统,目前已经开 ...

  6. python唐诗分析综合_Python爬虫抓取唐诗宋词

    一 说明 Python语言的爬虫开发相对于其他编程语言是极其高校的,在上一篇文章 爬虫抓取博客园前10页标题带有Python关键字(不区分大小写) 的文章中,我们介绍了使用requests做爬虫开发, ...

  7. python解析网页数据_python爬虫——爬取网页数据和解析数据

    1.网络爬虫的基本概念 网络爬虫(又称网络蜘蛛,机器人),就是模拟客户端发送网络请求,接收请求响应,一种按照一定的规则,自动地抓取互联网信息的程序. 只要浏览器能够做的事情,原则上,爬虫都能够做到. ...

  8. python全网表情包_Python爬虫爬取最右公众号表情包资源

    某天上厕所刷手机,看到最右公众号里面有一个表情包资源合集 点进去发现有70多期表情包,突然就想到了最近学的爬虫,立马跑回去打开电脑准备看能不能全部爬下来. 我的想法是先找到这70多期的url链接,然后 ...

  9. python找电影资源_Python爬虫爬取BT之家找电影资源

    head.jpg 一.写在前面 最近看新闻说圣城家园(SCG)倒了,之前BT天堂倒了,暴风影音也不行了,可以说看个电影越来越费力,国内大厂如企鹅和爱奇艺最近也出现一些幺蛾子,虽然目前版权意识虽然越来越 ...

最新文章

  1. linux和java_java内存和linux关系
  2. mysql用户连接数_mysql用户连接数
  3. 你眼泪的味道,我知道!
  4. word中格式化姓名的输出
  5. Codeforces 474C Captain Marmot 给定4个点和各自旋转中心 问旋转成正方形的次数
  6. java路径Java开发中获得非Web项目的当前项目路径
  7. Cocos2d-x学习之创建Android工程和编译
  8. 最新解决laravel框架路由无法显示的问题
  9. vscode更改配置文件路径_VsCode的jsconfig配置文件说明详解
  10. Q:How to read attribute from a tag
  11. 快速下载谷歌云盘大文件的5种方法
  12. C语言学习笔记->const和define区别
  13. 怎么在gif表情包上添加文字?
  14. Python学习记录 基于《Python编程 从入门到实践》 Python基础 Python第三课 操作列表
  15. 百度地图离线开发2.0
  16. Shell攻关之正则表达式
  17. 中国空气质量AQI热力图
  18. Fabric.js 图形标注
  19. iPh oto的删除动画
  20. 咖说丨一文说清“链上”和“链下”

热门文章

  1. ELK日志管理系统的搭建
  2. 2016锐捷网络云课堂云网络研讨会福州闭幕 根植教育彰显“变革之力”
  3. nacos注册中心死活发现不了服务问题
  4. 飞行模拟器V1.0正式版
  5. [解决方案] LaTeX公式中的多行大括号 (如涵盖多个不等式)
  6. c语言 m文件是什么,M文件扩展名 - 什么是.m以及如何打开? - ReviverSoft
  7. 是的你没看错,js生成word文档
  8. html5网页制作技巧,HTML5 网页制作技巧
  9. 国内外可用的知识图谱资源
  10. 在 tsx 中使用 react 的 ref 属性