用python写的爬虫爬取彼岸桌面的图片,没有翻页,只爬取第一页。
import requests from bs4 import BeautifulSoup import os from urllib.request import urlretrieve class APP: def __init__(self): self.url = 'http://www.netbian.com/' self.header = '' self.path = "D:/123图片下载/" # self.path = os.path.abspath('.') #当前代码文件所在的workspace的路径 # os.makedirs('/image/', exist_ok=True) #D盘下创建目录image exist_ok=True文件夹存在时不报错 # path = os.path.join(path1, path2) #函数:连接两个或更多的路径名组件 1.如果各组件名首字母不包含’ / ’,则函数会自动加上 2.如果有一个组件是一个绝对路径,则在它之前的所有组件均会被舍弃 3.如果最后一个组件为空,则生成的路径以一个’ / ’分隔符结尾 self.get_picture() def get_html(self): response = requests.get(self.url, headers=self.header) response.encoding = response.apparent_encoding html = response.text return html def get_picture(self): os.makedirs(self.path, exist_ok=True) html = self.get_html() soup = BeautifulSoup(html, 'html.parser') p_urls = soup.find_all('img') def reporthook(a, b, c): """ 显示下载进度 :param a: 已经下载的数据块 :param b: 数据块的大小 :param c: 远程文件大小 :return: None """ per = 100.0 * a * b / c if per > 100: per = 100 print("\rdownloading: '%.2f%%'" % per, end="") i = 1 for p_url in p_urls: u = p_url.get('src') file_name = self.path + '%d' % i + '.jpg' print("\n正在下载:" + file_name) urlretrieve(u, file_name, reporthook) i += 1 if __name__ == "__main__": app = APP()
结果显示是这个样子