re爬取糗图

mac2024-07-22  63

import urllib.request import re import os import time # 输入起始页码和结束页码 start_page = int(input('请输入起始页码-')) end_page = int(input('请输入结束页码-')) #https://www.qiushibaike.com/pic/page/2/ url = 'https://www.qiushibaike.com/pic/page/{}/' headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36', } # 搞一个循环,依次下载每一页的所有图片 for page in range(start_page, end_page + 1): print('正在爬取第--%s--页......' % page) # 拼接url urlt = url.format(page) # 构建请求对象 request = urllib.request.Request(url=urlt, headers=headers) # 发送请求,得到响应 response = urllib.request.urlopen(request) print(response) #<http.client.HTTPResponse object at 0x0000000002ABADD8> # 得到网页字符串格式内容 content = response.read().decode('utf8') # 写一个正则表达式,提取里面所有的图片链接 # pattern = re.compile(r'<img src="(.*?)" alt="(.*?)">') # 这样写不对,接着修改,先找所有的div class="thumb" # pattern = re.compile(r'<div class="thumb">.*?</div>', re.S) # 接着细化,得到里面的img的src属性 # < div class ="thumb" >< a href = "/article/121275861" target = "_blank" >< img src = "//pic.qiushibaike.com/system/pictures/12127/121275861/medium/2XPCMHUBH8F154RX.jpg" alt = "人生实在是大起大落" ></a> # </div> pattern = re.compile(r'<div class="thumb">.*?<img src="(.*?)" alt="(.*?)" />.*?</div>', re.S) ret = pattern.findall(content) # print(ret) # 遍历这个列表,依次下载每个图片 for info in ret: # 取出图片的地址 image_url = 'https:' + info[0] # 取出图片的名字 image_name = info[1] # print(image_name) # 拼接文件的名字 filename = image_name + '.' + image_url.split('.')[-1] print('正在下载--%s--...' % filename) dirname = 'qiutu' filepath = os.path.join(dirname, filename) # 下载图片 urllib.request.urlretrieve(image_url, filepath) print('结束下载--%s--' % filename) time.sleep(2) print('结束爬取第--%s--页...' % page) time.sleep(2) # 单行模式 注意提取字符串里面内容有换行 re.S 否则返回可能为空 # .*? 不需要,匹配走 (.*?)保留 #注意右击检查中的代码可能与源码中的代码不同, 导致匹配错误,某个标签可能会有 /符号,而检查中没有 /符号
最新回复(0)