import re,urllib.request
import random
import urllib.request
import bs4
from bs4 import BeautifulSoup
class SUrl:
def SetUrl(self,ImageUrl):
print("程序开始运行.....请稍等!!!")
request = urllib.request.urlopen(ImageUrl) #要爬取的网站
buf = request.read().decode('utf-8') #设置编码格式
listurl = re.findall(r'data-original=.+\.jpg', buf) #找到该网站内所有以(data-original开头并以jpg结尾的url)
response = urllib.request.urlopen("http://www.imooc.com/course/list?page=1") #要爬取的网站
html = response.read().decode('UTF-8') #设置编码格式
Div = BeautifulSoup(html, 'html.parser')
GetText = Div.find_all('div', class_='course-card-content') #获取网站divclass为course-card-content的html
GetA = Div.find_all('h3') #获取网站该div下的h3标签
ListTitle = []
for i in range(0, 17):
HuoQu = GetA[i].text.replace('\xa0', '\n\n') #去除html标签,只保留其中的内容
ListTitle.append(HuoQu) #将图片名称添加到ListTitle数组中去
List = []
for j in listurl:
name = 'http:'
str(name)
Url = name + j[15:] #去除每一个j字符串(url)的前15个字母
List.append(Url) #向List数组中添加最终形成的url网址
for i,url in enumerate(List): #用遍历数组和其下标的方式可以加上其图片的名称
Nima=str(ListTitle[i]) #图片名称=每一个ListTitle中的[i],并遍历出来
f = open(Nima+'.jpg', 'wb+')
req = urllib.request.urlopen(url)
buf = req.read()
f.write(buf) #开始下载数据
if __name__ == "__main__":
print("程序开始运行.....")
get=SUrl()
list=['1','2','3'] #循环输出多个url网址的图片
for i in list:
Url2='http://www.imooc.com/course/list?page='+i #一般都是有规律的,只改最后一个就行
get.SetUrl(Url2)
print("程序运行结束.....")
只做记录学习
(qq:九七二四三九三二九,有不懂的可以问我)