爬虫简单小案例-爬取某网站图片

27 阅读1分钟

使用到的工具

request库,用来请求网站获取返回的html页面代码;BeautifulSoup解析器,用来解析html页面代码获取对应的图片地址完成下载,urlretrieve下载工具用来下载图片。

完整代码

import time
import urllib

import requests
from bs4 import BeautifulSoup

headers = {
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36 SLBrowser/8.0.0.12022 SLBChan/128'
}

img_url = 'https://pic.netbian.com{}'


# 爬取当页下的所有图片地址
def get_allimg_url(page_url):
    response = requests.get(page_url, headers=headers)
    # 处理当中文乱码的情况
    beautifulsoup = BeautifulSoup(response.text.encode('iso-8859-1').decode('gbk'), 'lxml')
    img_tup = beautifulsoup.find_all('img')
    print(img_tup)
    for img in img_tup[0:len(img_tup) - 3]:
        img_src = img.get('src')
        # 下载图片到本地
        urllib.request.urlretrieve(img_url.format(img_src), '../images/{}.png'.format(img.next.text))
        print('下载{}图片完成'.format(img.next.text))
        # 让代码停止运行1秒,用于防止被封ip
        time.sleep(1)


# 爬取指定页数下的url地址
def get_url_pages(pages_num):
    pages_tup = []
    for i in range(pages_num):
        pages_tup.append(img_url.format('/4kmeinv/index_{}.html').format(i + 1))
    return pages_tup


# 主函数运行
if __name__ == '__main__':
    pages_tup = get_url_pages(5)
    for pages_url in pages_tup:
        get_allimg_url(pages_url)