zoukankan      html  css  js  c++  java
  • python网络爬虫之爬取图片

    今天使用requests和BeautifulSoup爬取了一些图片,还是很有成就感的,注释可能有误,希望大家多提意见:

    方法一:requests

    import requests
    from bs4 import BeautifulSoup
    circle = requests.get('http://travel.quanjing.com/tag/12975/%E9%A9%AC%E5%B0%94%E4%BB%A3%E5%A4%AB')
    
    # 将获取的图片地址依次放入count中
    count = []
    # 将获取的网页内容放入BeautifulSoup
    soup = BeautifulSoup(circle.text, 'lxml')
    # 根据谷歌SelectGadGet这个插件,获取html标签,比如获取:#gallery-list
    for item in soup.select('#gallery-list'):
        # 用bs4中的find_all获取 #gallery-list 中是否存在 img这个标签
        for img in item.find_all('img'):
            print('img', img)
            # m 是 img标签中存在的属性
            img_path = img.get('m')
            count.append(img_path)
    # 用enumerate依次取出count中的图片地址 放入v中
    for i,v in enumerate(count):
        # 将获取的v值再次放入request中进行与网站相应
        image = requests.get(v)
        # 存取图片过程中,出现不能存储 int 类型,故而,我们对他进行类型转换 str()。w:读写方式打开,b:二进制进行读写。图片一般用到的都是二进制。
        with open('D:\img'+str(i)+'.jpg', 'wb') as file:
            # content:图片转换成二进制,进行保存。
            file.write(image.content)
        print(i)

     方法二:urllib.request

    from bs4 import BeautifulSoup
    import urllib.request as ure
    import os
    url = 'http://travel.quanjing.com/tag/12975/%E9%A9%AC%E5%B0%94%E4%BB%A3%E5%A4%AB'
    response = ure.urlopen(url, timeout=30)
    circle = response.read().decode('utf-8')
    
    # 将获取的图片地址依次放入count中
    count = []
    # 将获取的网页内容放入BeautifulSoup
    soup = BeautifulSoup(circle, 'lxml')
    # 根据谷歌SelectGadGet这个插件,获取html标签,比如获取:#gallery-list
    for item in soup.select('#gallery-list'):
        # 用bs4中的find_all获取 #gallery-list 中是否存在 img这个标签,limit:限制爬取的数量。
        for img in item.find_all('img', limit=5):
            print('img', img)
            # m 是 img标签中存在的属性
            img_path = img.get('m')
            count.append(img_path)
    if not os.path.exists('photo'):
        os.makedirs('photo')
    # 用enumerate依次取出count中的图片地址 放入v中
    for i,v in enumerate(count):
        # 存取图片过程中,出现不能存储 int 类型,故而,我们对他进行类型转换 str()。w:读写方式打开,b:二进制进行读写。图片一般用到的都是二进制。
        path = 'photo\img'+str(i)+'.jpg'
        with open(path, 'w') as file:
            ure.urlretrieve(v, path)
        print(i)
  • 相关阅读:
    20165101刘天野 2017-2018-2 《Java程序设计》 结对编程练习_四则运算(第一周)
    20165101刘天野 2017-2018-2 《Java程序设计》第6周学习总结
    20165101 实验一 Java开发环境的熟悉
    20165101刘天野 2017-2018-2 《Java程序设计》第5周学习总结
    HTML——meta
    CSS——改变浏览器滚动条样式
    HTML5——移动端的点击、拖拽
    JS高级——弹出框的美化
    JS高级——监听浏览器的返回事件
    JS高级——文件操作
  • 原文地址:https://www.cnblogs.com/peixu/p/8035060.html
Copyright © 2011-2022 走看看