用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()
结果显示是这个样子