下面开始上代码
需要用到的库
import request #页面请求
import time #用于时间延迟
import re #正则表达式内容提取
构造请求头,这个要说明一下,有的网站不需要这个,但是虎牙需要,要不然就会给你返回错误码,大家可以试试,这是最基本的防反爬虫手段
至于怎么搞来的,按下f12然后去复制就可以了,详细可以问度娘请求头怎么做
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.87 Safari/537.36 SE 2.X MetaSr 1.0"}
定义一个变量response 来接收请求到的网页,注意用request是返回的状态码所以要定义html变量。
然后用变量 html接收网页源代码
response = requests.get(headers=headers, url="https://www.huya.com/g/1663")
html = response.text
下面要用正则表达式了
urls = re.findall(',html) #正则表达式提取图片链接
names = re.findall(',html)#正则表达式提取文件名称,用于最后保存图片用的名称
下面用一个for循环实现多张图片下载,对了要提前在你这个保存代码的文件夹下新建一个girls的文件夹用来保存图片 ./的意思就是当前目录,要不然会报错找不到目录,当然你也可以用os库加if语句判断一下,如果找不到就新建一个,自行百度吧,哈哈哈
i =1 #定义一个变量,后面提示用的
for url,names in zip(urls,names):
time.sleep(0.1) #防止被限制设置时间间隔0.5s
if url[0] !='h' #这个是用来补全连接,有些图片链接会掉了http//,我也不知道为什么
url = 'http//' + url
response = requests.get(url = url,headers = headers)
print("正在下载第%d张"%i)
with open('./girls/%s.jpg'%name,'wb') as jpg:#文件处理
jpg.write(response.content)
print("下载完毕")
下面是效果
附上源代码 如果各位要运行的话请复制这个,这个是我从我IDE复制过来的,运行没问题,由于现在我是在自学,上面的是我又重新把代码敲了一遍作为复习了,没有运行,可能出现错误,所以说要运行就复制这个总的
import time
import os
import requests
import re
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.87 Safari/537.36 SE 2.X MetaSr 1.0"}
response = requests.get(headers=headers, url="https://www.huya.com/g/1663")
html = response.text
urls = re.findall(',html)
names = re.findall(',html)
dir_name = "girls"
#
#
i = 1
for url,name in zip(urls,names):
time.sleep(0.5)
if url[0] != 'h':
url = 'https:' + url
url = url.split('?')[0]
response = requests.get(url=url, headers=headers)
print('正在下载第 %d 张'%i)
i = i + 1
with open('./girls/%s.jpg' % name, 'wb') as jpg:
jpg.write(response.content)
print('<%s>下载完成!' % name)
可能写的很复杂,多线程什么的我现在还不懂,大佬勿喷,欢迎点评