Python--爬虫之(斗图啦网站)图片爬取

news/2024/5/20 11:31:52/文章来源:https://blog.csdn.net/weixin_30821731/article/details/96716248

学习重点:

  一、主要的安装包,requests、BeautifulSoup4

  二、首先爬取每页的网址

  三、再爬取每页的全部图片

  四、下载图片和设置保存路径和图片名字

  五、整合代码


1、主要的安装包requests、BeautifulSoup4 

  1)用来请求网络数据requests

  2)用来解析html文档,然后过滤我们需要的数据BeautifulSoup4

  3)引用安装包有两种方法,可以全部导入进来,也可以只导入你需要的部分进来 

import requestsFrom bs4 import BeautifulSoup4

2、首先爬取每页的网址

爬取的网站为斗图啦:https://www.doutula.com/photo/list/

  我们要来分析一下爬取网站的url=https://www.doutula.com/photo/list/ 当你点击到不同的页面上是会发现网址变了,而且还非常有规律的变化,如图到第三页(https://www.doutula.com/photo/list/?page=3)多了一个?page=3

  当你到100页你发现多了一个?page=100,所以我们可以用一个For循环来获取全部的页面,

BASE_PAGE_URL = ‘https://www.doutula.com/photo/list/?page=’
BASE_URL_LIST = []
for x in range(1,401): #爬取1到400页的表情url = BASE_PAGE_URL + str(x)#将1到400转换成字符串形式#print(url)#可以打印来看看是不是1-400页全部的网址PAGE_URL_LIST.append(url)#存入到列表中

打印结果:

 

3、再爬取每页的全部图片

  爬取每页的全部图片,这时就需要来分析网页源代码,看图片放在什么地方。鼠标右击进入网页元素界面如下图:

  要想找到某张图片对应的网页源代码,点击如图所示箭头即可快速找到

  找到资源那就来分析是不是有规律,果然如此,我们发现每张图片的img标签的属性class都相同class= “img-responsive lazy image_dta loaded”,不要加loaded,加了下载不到图片(原因不明)

  所以又可以通过For循环来获取整页的图片网址

re = requests.get('https://www.doutula.com/photo/list/?page=1')
content = re.content
# 解析该页面
soup = BeautifulSoup(content, 'lxml')
img_list = soup.find_all('img', attrs={'class': 'img-responsive lazy image_dta'})
for img in img_list:print('http:' + img['data-original'])print('_'*30)

打印结果:点击网址即可出现图片

4、下载图片的保存路径和图片名称设置

   这里需要用到另外一个python自带urllib.request库,导入方法同上

url = 'http://ww1.sinaimg.cn/bmiddle/9150e4e5gy1g3wwi7dn6sj208c08caab.jpg'
split_list = url.split('/')#将url字符串分割成四段[‘http:’,’ww1.sinaimg.cn’,’bmiddle’,’9150e4e5gy1g3wwi7dn6sj208c08caab.jpg’]
filename = split_list.pop() #将9150e4e5gy1g3wwi7dn6sj208c08caab.jpg作为图片的名字
path = os.path.join('imgpic', filename)#保存路径,
#注意Windows为(反斜杠)和Linux(斜杠)里面路径不同
#D:\sourceis\imgpic
#~/oyl_python/imgpic

urllib.request.urlretrieve(url, filename=path)

运行结果:创建了一个imgpic的文件夹,里面下载了一张名称为9150e4e5gy1g3wwi7dn6sj208c08caab.jpg的图片

5、整合代码

#!/usr/bin/env/python
# _*_coding:utf-8 _*_#用来请求网络数据
import requests
import urllib.request
#用来解析HTML文档,然后过滤我们需要的数据
from bs4 import BeautifulSoup
import os
#每页数据  https://www.doutula.com/photo/list/?page=1#获取1到400的全部页面
BASE_PAGE_URL = 'https://www.doutula.com/photo/list/?page='
PAGE_URL_LIST = []
for x in range(1,401):url = BASE_PAGE_URL + str(x)PAGE_URL_LIST.append(url)def download_imge(url):#url = 'http://ww1.sinaimg.cn/bmiddle/9150e4e5gy1g3wwi7dn6sj208c08caab.jpg'split_list = url.split('/')filename = split_list.pop()    path = os.path.join('imgpic', filename)try:urllib.request.urlretrieve(url, filename=path)except:passdef get_page(page_url):# 获取每页里面的图片#re = requests.get('https://www.doutula.com/photo/list/?page=1')re = requests.get(page_url)# print(re.content)content = re.content# 解析该页面soup = BeautifulSoup(content, 'lxml')img_list = soup.find_all('img', attrs={'class': 'img-responsive lazy image_dta'})# print(img_list)for img in img_list:# print('http:' + img['data-original'])# print('_'*30)# url = 'http:' + img["data-original"]url = img["data-original"]download_imge(url)def main():for page_url in PAGE_URL_LIST:get_page(page_url)passif __name__ == '__main__':main()

 

转载于:https://www.cnblogs.com/ncne/p/11031808.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_747230.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

电商网站jQuery放大镜代码

分享一款电商网站jQuery放大镜代码。这是一款基于jquery.elevatezoom插件实现的类似淘宝放大镜代码,提供40多种参数,可自由配置多种效果,适合电商或图片类网站使用。效果图如下: 在线预览 源码下载 实现的代码。 html代码&…

大型网站技术架构

1. 初始阶段的网站架构一般来讲,大型网站都是从小型网站发展而来,一开始的架构都比较简单,随着业务复杂和用户量的激增,才开始做很多架构上的改进。当它还是小型网站的时候,没有太多访客,一般来讲只需要一台…

IIS7绑定多个HTTPS网站并应用自签名证书

本文主要介绍如何在IIS中添加多个网站并使用同一个数字签名证书(win7IIS7.5) IIS中添加站点site1,端口号为80,主机名为空。如下图:创建证书 IIS->Server Certificates –>Create Self-Signed Certificate ,输入证书名如下图&#xff1a…

01_很好的网站:程序师

2019独角兽企业重金招聘Python工程师标准>>> http://www.techug.com/ 动画讲解Eclipse常用快捷键 http://www.techug.com/eclipse-shortcut-keys 十大编程算法助程序员走上高手之路 http://www.techug.com/10-algorithm-help-programmer-grow-up 转载于:https://my.…

如何构建高性能web网站:分布式缓存

一、数据库前端缓冲区 要清除数据库前缓冲区,首先必须明确什么是文件系统的内核缓冲区(Buffer Area):它位于内核的物理内存地址空间,除了使用O_DIRECT比其他标签中打开文件,所有的磁盘的读写操作&#xff0…

7月上旬国内网站流量统计TOP5:新浪跻身五强居四

IDC评述网(idcps.com)07月15日报道:根据中国互联网协会-中国网站排名公布的最新数据显示,截至2015年7月13日,国内网站独立访问量五强名单分别是百度、腾讯网、360安全中心、新浪网、淘宝网。具体情况如下图所示&#x…

网站集成微博登录功能

前几天写了一篇关于网站集成QQ登录的文章受到不少网友的好评,期间有不少网友私信能不能写一篇关于网站集成新浪微博登录功能的文章,于是这些天抽空写了这篇文章,希望能帮到有需要的朋友。 一.前期准备 网站要想集成新浪微博登录功能&#xff…

个人网站如何赚钱

2019独角兽企业重金招聘Python工程师标准>>> 好多人都说,个人站长已死,许多都开始慢慢转型了。有的开始找合作伙伴,组建团队,有的转型做了自媒体,有的干脆直接去上班了……但是,个人站长真的就没…

安全网站推荐

2019独角兽企业重金招聘Python工程师标准>>> 国内 https://www.t00ls.net t00ls是国内比较低调的民间组织&#xff0c;论坛质量较高。 <?php $head "80vul"; 黑哥所在团队&#xff0c;博客内容质量很好。 Worm.cc 我所在邪红色信息安全组织的不知名博…

分类信息网站大全

2019独角兽企业重金招聘Python工程师标准>>> 分类信息网站大全 &#xff08;排名不分先后&#xff09; 1. 58同城 http://bj.58.com/ 2. 赶集网 http://www.ganji.com/ 3. 中国分类信息网 http://www.fenlei168.com/ 4. 今题网 http://www.jinti.com/ 5. 易…

服务端渲染(回答vue为啥子不支持seo优化,如何解决)

整体目标&#xff1a; 理解服务端渲染的概念会用vue的SSRNuxt中的async 一、基本概念 页面的两种生成方式 用户从浏览器地址栏中输入地址访问服务器上的页面时&#xff0c;服务器可以用两种不同的策略来生成这个页面&#xff0c;对应着程序员写的不同的实现方式。 打开给出…

前端和算法实现:给网站上加上自己的水印(以后用上)

watermark插件的github地址&#xff1a;https://github.com/saucxs/watermark 一、简单 阿里巴巴内网的不可见水印用的是什么算法&#xff1f; 下面的只是简单的加一个很浅的水印&#xff0c;实现起来很容易。 浏览器终端下粘贴下面的代码&#xff0c; 这样就可以加水印了。我选…

网站打开速度多少毫秒为正常_网站测速工具,那些你可能不知道的隐藏功能

文章目录PING命令测速查看内置浏览器的网页加载速度使用工具来测试网站速度新做的网站如果速度不过关基本就等于废了&#xff0c;所以网站上线前测试速度很重要&#xff0c;一般来说网站5秒内打开都是可以接受的&#xff0c;其实我觉得能三秒内打开是最好的。有的朋友觉得自己测…

站长吧asp工具设置_做网站必看:这些网络推广seo工具很不错.

在网络优化的工作中&#xff0c;为了减轻站长们的工作任务&#xff0c;提高他们的工作效率&#xff0c;会采用一些seo工具。俗话说不会用网络推广seo工具的站长不是好站长&#xff0c;要善于利用工具达到效果。1、 站长工具站长工具&#xff0c;是每一位站长都不陌生的工具&…

多布局怎么搭建_为什么网站要做SEO优化?怎么优化比较好?

在竞争激烈的互联网环境中&#xff0c;企业与企业之间的较量除了技能、质量外&#xff0c;还存在一个最重要的竞争---流量的获取。如何降低获客成本&#xff0c;如何让自己的网站排名靠前&#xff0c;如何以最快的速度实现产品/服务的变现等等&#xff0c;成为了众多企业们急迫…

这个网站可以看到古代诗人轨迹地图

在博客上看到一个很有意思的网站分享&#xff0c;能够看到古代诗人的轨迹地图。&#xff08;mark一下&#xff09; 这是一张“唐宋文学编年地图”&#xff0c;尚在测试阶段&#xff0c;数据及界面还在进一步完善。 我们知道&#xff0c;古代交通远没有如今这么发达&#xff0c;…

怎么判断一个网站是不是伪静态

0x0前言&#xff1a; 在渗透测试的时候我们得判断脚本语言&#xff0c; 动态网站的后缀名为脚本语言的后缀 如 php asp jsp aspx py 静态网站的后缀 如 html htm shtml 等.... 0x01正文&#xff1a; 通过查看网站最后修改时间就能判断网站是不是伪静态 我们拿博客园来做例子 原…

2017国际大数据及云计算展开幕 凡科建站云平台吸睛

8月10日&#xff0c;2017中国大数据及云计算展览会在北京国际展览中心盛大开幕&#xff0c;吸引了众多国内外互联网大品牌参展。如今&#xff0c;随着云计算的普及&#xff0c;大数据应用也向更深、更广的领域展开&#xff0c;其驱动着各个行业的快速发展&#xff0c;并受到了空…

如何让你的网站用上免费的HTTPS

因为之前网站上被注入了广告&#xff0c;再百般尝试之后最后还是使用了HTTPS解决了。 在实现HTTPS的时候最关键的就是证书。 证书的质量觉得了你被多少浏览器所信任。 证书的价格也就蹭蹭蹭往上涨了。 这里推荐一个免费而且实用的证书供参考——阿里云的免费证书 下面有几个推荐…

LAMP+haproxy+varnish实现网站访问的动静分离及静态资源缓存

实验目标&#xff1a; 1. LAMP节点提供用户动态请求访问&#xff0c;数据库单独有数据库节点提供&#xff1b; 2. LAMP动态网站有两台服务器&#xff0c;提供负载均衡&#xff1b; 3. 静态网站服务器节点提供用户的静态资源请求访问&#xff1b;存在两台静态web服务器…