【爬虫实战】python爬取虎牙直播间封面美女图片

Python爬虫爬取虎牙直播间封面美女图片

写作缘起

这篇文章主要是介绍如何使用python爬虫来爬取虎牙直播间的封面,我发现星秀封面上的小姐姐都挺漂亮的,这不得保存下来好好欣赏

上代码

import requests
import re
import os

# 获取虎牙直播封面图片、链接、标题、主播名
headers = {
    'user-agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.79 Safari/537.36',
    'Connection': 'keep-alive',
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
    'Referer': 'https://www.huya.com/',
    'Accept-Encoding': 'gzip, deflate, sdch',
    'Accept-Language': 'en-US,en;q=0.8'
}

url = 'https://www.huya.com/g/xingxiu'

response = requests.get(url,headers=headers)

html = response.text

# 直播间图片,图片url
pics = re.findall(r'<img class="pic".*?data-original="(.*?)" src.*?>',html)
# 直播间链接
hrefs = re.findall(r'<a href="(.*?)" class="title"',html)
# 直播间标题
titles = re.findall(r'<a.*?class="title".*?title="(.*?)"',html)
# 直播间主播名字
names = re.findall(r'<i class="nick".*?>(.*?)</i>',html)
items = []

# 用字典保存直播间信息
for i in range(len(pics)):
    item = {'pic': '', 'href':'','name': '', 'title': ''}
    # 加match主要是去除无效链接
    if(re.match(r'https://',pics[i])):
        item['pic'] = pics[i]
        item['href'] = hrefs[i]
        item['name'] = names[i]
        item['title'] = titles[i]
        items.append(item)

# 下载图片
# url图片直接访问网址然后获取二进制格式即可,如requests.get(url=pic).content
for item in items:
	# 输出一下字典
    print(item)
    # 设置文件路径/huya/xxx.jpg
    _dir = './huya'
    if not os.path.exists(_dir):
        os.mkdir(_dir)
    # 设置图片文件名、图片内容是访问url得来的
    name = item['name']
    path = './huya/' + name +'.jpg'
    pic = item['pic']
    # 二进制图片文件
    content = requests.get(pic).content
    with open(path,'wb') as f:
        f.write(content)


效果展示

截图
在这里插入图片描述

思路分析

由于虎牙貌似没用反爬虫,运用简单的爬虫手段就可以了;
主要分三步:
一是从html文档中解析出封面图片的url、主播id、直播间标题、直播间链接等信息,并用字典保存下来,运用到请求库requests、正则库re,如下

在这里插入图片描述

response = requests.get(url,headers=headers)

html = response.text

# 直播间图片,图片url
pics = re.findall(r'<img class="pic".*?data-original="(.*?)" src.*?>',html)
# 直播间链接
hrefs = re.findall(r'<a href="(.*?)" class="title"',html)
# 直播间标题
titles = re.findall(r'<a.*?class="title".*?title="(.*?)"',html)
# 直播间主播名字
names = re.findall(r'<i class="nick".*?>(.*?)</i>',html)
# 用字典保存直播间信息
for i in range(len(pics)):
    item = {'pic': '', 'href':'','name': '', 'title': ''}
    # 加match主要是去除无效链接
    if(re.match(r'https://',pics[i])):
        item['pic'] = pics[i]
        item['href'] = hrefs[i]
        item['name'] = names[i]
        item['title'] = titles[i]
        items.append(item)

二是创建文件路径,在当前路径下创建一个名为huya的文件夹,然后把获取到的主播id作为图片jpg文件名,使用系统库os来操作文件

    # 设置文件路径/huya/xxx.jpg
    _dir = './huya'
    if not os.path.exists(_dir):
        os.mkdir(_dir)
    # 设置图片文件名、图片内容是访问url得来的
    name = item['name']
    path = './huya/' + name +'.jpg'

三是遍历字典,访问图片的url,获取二进制格式content,并write到jpg文件中

    pic = item['pic']
    # 二进制图片文件
    content = requests.get(pic).content
    with open(path,'wb') as f:
        f.write(content)
已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页