这篇文章主要是介绍如何使用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'',html)
# 直播间链接
hrefs = re.findall(r',html)
# 直播间标题
titles = re.findall(r',html)
# 直播间主播名字
names = re.findall(r'(.*?)',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'',html)
# 直播间链接
hrefs = re.findall(r',html)
# 直播间标题
titles = re.findall(r',html)
# 直播间主播名字
names = re.findall(r'(.*?)',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)