今天使用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)

python网络爬虫之爬取图片的更多相关文章

  1. python网络爬虫《爬取get请求的页面数据》

    一.urllib库 urllib是python自带的一个用于爬虫的库,其主要作用就是可以通过代码模拟浏览器发送请求.其常被用到的子模块在python3中的为urllib.request和urllib. ...

  2. python网络爬虫--简单爬取糗事百科

    刚开始学习python爬虫,写了一个简单python程序爬取糗事百科. 具体步骤是这样的:首先查看糗事百科的url:http://www.qiushibaike.com/8hr/page/2/?s=4 ...

  3. Python网络爬虫_爬取Ajax动态加载和翻页时url不变的网页

    1 . 什么是 AJAX ? AJAX = 异步 JavaScript 和 XML. AJAX 是一种用于创建快速动态网页的技术. 通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新 ...

  4. Python网络爬虫 | Scrapy爬取妹子图网站全站照片

    根据现有的知识,写了一个下载妹子图(meizitu.com)Scrapy脚本,把全站两万多张照片下载到了本地. 网站的分析 网页的网址分析 打开网站,发现网页的网址都是以 http://www.mei ...

  5. 如何利用Python网络爬虫爬取微信朋友圈动态--附代码(下)

    前天给大家分享了如何利用Python网络爬虫爬取微信朋友圈数据的上篇(理论篇),今天给大家分享一下代码实现(实战篇),接着上篇往下继续深入. 一.代码实现 1.修改Scrapy项目中的items.py ...

  6. 利用Python网络爬虫爬取学校官网十条标题

    利用Python网络爬虫爬取学校官网十条标题 案例代码: # __author : "J" # date : 2018-03-06 # 导入需要用到的库文件 import urll ...

  7. python网络爬虫之解析网页的正则表达式(爬取4k动漫图片)[三]

    前言 hello,大家好 本章可是一个重中之重,因为我们今天是要爬取一个图片而不是一个网页或是一个json 所以我们也就不用用到selenium模块了,当然有兴趣的同学也一样可以使用selenium去 ...

  8. python网络爬虫之解析网页的BeautifulSoup(爬取电影图片)[三]

    目录 前言 一.BeautifulSoup的基本语法 二.爬取网页图片 扩展学习 后记 前言 本章同样是解析一个网页的结构信息 在上章内容中(python网络爬虫之解析网页的正则表达式(爬取4k动漫图 ...

  9. 假期学习【六】Python网络爬虫2020.2.4

    今天通过Python网络爬虫视频复习了一下以前初学的网络爬虫,了解了网络爬虫的相关规范. 案例:京东的Robots协议 https://www.jd.com/robots.txt 说明可以爬虫的范围 ...

随机推荐

  1. if判断用法

  2. nginx调优(二)

    nginx调优(一) (1).Fastcgi调优 FastCGI全称快速通用网关接口(FastCommonGatewayInterface),可以认为FastCGI是静态服务和动态服务的一个接口.Fa ...

  3. Spring4.X整合redis

    包和版本的依赖关系很严重 我的配置 spring-data-redis-1.6.6.RELEASE.jar spring-tx-4.2.5.RELEASE.jar redis-2.7.2.jar co ...

  4. top显示命令详解+top命令使用

    http://blog.csdn.net/u014226549/article/details/22041289

  5. C#中 [], List, Array, ArrayList 區別

    [] 是針對特定類型.固定長度的.List 是針對特定類型.任意長度的.Array 是針對任意類型.固定長度的.ArrayList 是針對任意類型.任意長度的.Array 和 ArrayList 是通 ...

  6. CRC校验的问题(c语言实现CRC校验和)

    1. 前面的数 7A 01 00,计算的结果是0X4920 2. 那么把数据CRC加上 3. 测试代码,计算出来的结果对不上,什么情况?可是我把参考模型的全部都选了一遍,也对不上其中一个!!! 4.  ...

  7. 关于Form、ModelForm的一些操作(持续更新)

    1.前端循环:后端传到前端的form是可以循环的,以此获得想要展示的元素 <form method="post" class="form-horizontal&qu ...

  8. DVWA 安全测试靶机本地搭建

    前期的搭建步骤这里就不多做表述了,网上文章很多,这里主要讲后续会遇到的问题和需要修改的地方.   首先将config-inc.php.dist  修改为config-inc.php 设置Key值 $_ ...

  9. LeetCode 278. 第一个错误的版本(First Bad Version)

    278. 第一个错误的版本 LeetCode278. First Bad Version 题目描述 你是产品经理,目前正在带领一个团队开发新的产品.不幸的是,你的产品的最新版本没有通过质量检测.由于每 ...

  10. leetcode 2019.10.29 首次破百

    刷题首次破百,记录一下自己成长的历程. 仍在路上,会慢慢变强的~