python通过网站主页面获得照片

news/2024/5/12 20:21:16/文章来源:https://blog.csdn.net/qq_41871270/article/details/80460596

怎么通过主页面的超链接来获取这个网站的照片呢?这里以23730为例子

接下来我们分析一下编写的过程:

第一步:在目录页面得到所有主页面的url

第二步:把这个url放在列表中

第三步:得到照片的url链接放到一个列表中

第四步:得到照片的名字放到一个列表中

第五步:将照片url的列表遍历并且发送request请求,写入文件。

并且文件的名字为照片名字


所以定义4个函数:

defget_content_url(list_con):

这个函数的任务就是得到目录下的所有url

defget_pic_url(List_pic,html):

这个函数的任务是得到所有的照片链接

defget_pic_name(List1_name,html):

得到照片的名字

defwrite_pic(List,List1):

将照片下载到文档中,并且文件的名字就是照片的名字

最后定义一个main函数用来调用所有的函数。

好了,开始第一个函数的编写:


def get_content_url(list_con):
url='http://www.27270.com/tag/63.html'#这是我要下载照片网站的主页urlhtml=requests.get(url)html.encoding='gbk'#将编码该为GBK是为了获取接下来的中文做准备soup=BeautifulSoup(html.text,'lxml')con_url=soup.find_all('a')j=0for i in con_url:#j用来计数,当j的值为30的时候退出这个循环,#因为这个目录有40个照片而我只需要前面30个try:href=i['href']if'http://www.27270.com/ent/meinvtupian/'in href and '.html'in href:#因为最主要的图片的url要满足这2个条件print(href)list_con.append(href[0:48])’’’我只需要他的url而不需要别的东西,href[0:48]就是把他的url给截取出来’’’j=j+1except:continueif(j==30):Break

Ok,第一个函数做完了接下来就是制作得到所有照片链接的函数了

def get_pic_url(List_pic,html):soup=BeautifulSoup(html,'lxml')src=soup.find_all('img')#找所有的img形式的照片try:for i in src:link=i['src']#找src属性的链接if'http://t2.hddhhn.com/uploads/tu/'and '9999'in link:#这是我要的照片的条件List_pic.append(link)except:print('错误')

接下来得到照片的名字

def get_pic_name(List1_name,html):soup=BeautifulSoup(html,'lxml')title=soup.find_all('h1',class_="articleV4Tit")name=''.join('%s' %i for i in title)#将列表里面的东西字符化,不然用不了replacename=name.replace('h1','')#将一些杂七杂八的东西丢掉name=name.replace('class="articleV4Tit"','')name=name.replace('</>','')name=name.replace('< >','')List1_name.append(name)#最后放到列表中

好了,接下来就是设置写入函数了

def write_pic(List,List1):for i in range(len(List)):#之所以不用for i in List 是为了接下来的提示try:html=requests.get(List[i])with open(List1[i]+'.jpg','wb') as f:f.write(html.content)print('第%d张写入成功'%i)#这就是为什么不用for i in Listf.close()except:print('第%d张写入失败'%i)continuereturn ''

Now,就让我们开始编写主函数main()

def main():list_pic=[]list_name=[]list_con=[]get_content_url(list_con)for j in list_con:for i in range(1,10):#我是下载这个套图的前面10章照片url=j+'_'+str(i)+'.html'html=requests.get(url)html.encoding='gbk'html=html.textget_pic_url(list_pic,html)get_pic_name(list_name,html)write_pic(list_pic,list_name)print(list_pic)print(list_name)list_pic=[]’’’为什么要将这两个列表初始化?因为我已经收集了一套的图片,如						果我不初始化的话,函数依然会调用那些我已经收集照片的url,						这就造成了资源的浪费’’’list_name=[]

最后调用main()函数

接下来给出所有的代码,注意!网站会更新它的系统,也就是说会更新它的代码!!!所以这个方法如果不行的话,是网站的原因不是我的原因,我自己是下载了的!

import requests
import re
from bs4 import BeautifulSoup
'''
第一步:在目录页面得到所有主页面的url
第二步:把这个url放在列表中
第三步:得到照片的url链接放到一个列表中
第四步:得到照片的名字放到一个列表中
第五步:将照片url的列表遍历并且发送request请求,写入文件。并且文件的名字为照片名字
'''
def get_content_url(list_con):url='http://www.27270.com/tag/63.html'html=requests.get(url)html.encoding='gbk'soup=BeautifulSoup(html.text,'lxml')con_url=soup.find_all('a')j=0for i in con_url:#j用来计数,当j的值为30的时候退出这个循环,#因为这个目录有40个照片而我只需要前面30个try:href=i['href']if'http://www.27270.com/ent/meinvtupian/'in href and '.html'in href:print(href)list_con.append(href[0:48])j=j+1except:continueif(j==30):breakdef get_pic_url(List_pic,html):soup=BeautifulSoup(html,'lxml')src=soup.find_all('img')try:for i in src:link=i['src']if'http://t2.hddhhn.com/uploads/tu/'and '9999'in link:List_pic.append(link)except:print('错误')def get_pic_name(List1_name,html):soup=BeautifulSoup(html,'lxml')title=soup.find_all('h1',class_="articleV4Tit")name=''.join('%s' %i for i in title)name=name.replace('h1','')name=name.replace('class="articleV4Tit"','')name=name.replace('</>','')name=name.replace('< >','')List1_name.append(name)def write_pic(List,List1):for i in range(len(List)):try:html=requests.get(List[i])with open(List1[i]+'.jpg','wb') as f:f.write(html.content)print('第%d张写入成功'%i)f.close()except:print('第%d张写入失败'%i)continuereturn ''def main():list_pic=[]list_name=[]list_con=[]get_content_url(list_con)for j in list_con:for i in range(1,10):url=j+'_'+str(i)+'.html'html=requests.get(url)html.encoding='gbk'html=html.textget_pic_url(list_pic,html)get_pic_name(list_name,html)write_pic(list_pic,list_name)print(list_pic)print(list_name)list_pic=[]list_name=[]main()





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

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

相关文章

大型网站系统架构分析

千万级的注册用户&#xff0c;千万级的帖子&#xff0c;nTB级的附件&#xff0c;还有巨大的日访问量&#xff0c;大型网站采用什么系统架构保证性能和稳定性&#xff1f; 首先讨论一下大型网站需要注意和考虑的问题。 数据库海量数据处理&#xff1a;负载量不大的情况下sele…

2 Day DBA-管理方案对象-练习:在NICK方案中创建表PurchaseOrder

列名 数据类型 大小 非空 ID NUMBER yes Description VARCHAR2 200 no PODate DATE yes Vendor NUMBER yes 1. 先注销原来的登录&#xff0c;使用NICK登录OEMDC 2. 进入到表查看页面后&#xff0c;点击【新建】…

2 Day DBA-管理方案对象-练习:给NICK方案中的PurchaseOrder表添加列。

列名 数据类型 大小 非空 ReceivedDate Date yes RequestorName VARCHAR2 40 no 1. 在查看表的页面中选中PurchaseOrder表&#xff0c;点击【编辑】 2. 输入新添加的列的信息&#xff0c;点击【应用】 来自 “ ITPUB博客 ” &#xff0…

练习:NICK方案中PurchaseOrder添加CHECK类型的约束,要求ReceivedDate = PODate

1. 在编辑表的页面中单击【约束条件】 2. 【约束条件】 CHECK&#xff0c;点击【添加】 3. 名称 CheckPruchaseOrderReceivedDate 检查条件 ReceivedDate > PODate 点击【继续】&#xff0c;返回到表编辑页面&#xff0c;点击【应用】 来自 “ ITPUB博客 ” &#…

名人博客和习题网站

高手的Blog 及ACM 好的网站2007-07-27 18:47http://blog.cs.swust.edu.cn/index.php?opViewArticle&articleId676&blogId68http://hi.baidu.com/gchrist/blog/item/2a89343fbd1d20ec54e723ff.htmlhttp://princetonboy.yculblog.com/archive.130652.p6.htmlhttp://note…

笔记-Java开发必须掌握的8种网站攻防技术

精选30云产品&#xff0c;助力企业轻松上云&#xff01;>>> 原文地址&#xff1a;https://mp.weixin.qq.com/s/QIqGGFJd8bcrHfJoSiwViA XSS攻击 XSS攻击的全称是跨站脚本攻击(Cross Site Scripting)&#xff0c;它指的是攻击者在网页中嵌入恶意脚本程序, 当用户打开…

JSON中toJSONString、ParseObject、parseArray的作用以及用 com.alibaba.fast.JSONArray解析字符串或者List集合

&#xff08;1&#xff09;parseArray的作用 import com.alibaba.fastjson.JSON; import lombok.Data; import org.junit.Test;import java.util.List;public class JSONTest {Testpublic void JSONTest() {//从Redis中查出来的字符串String str "[{\"ct_pt\"…

学编程没人带?推荐10个免费学编程的最佳网站给你

学习编程是开启你的Web开发和移动应用开发职业生涯的一种绝佳方式。在这篇文章中&#xff0c;我们将分享10个有助你学编程的最佳网站。 1.Codecademy 它是学编程最流行的网站之一。事实上&#xff0c;2000万人已经使用这个网站来学习编程了。你只需要注册一个免费帐户&#xf…

从小白到程序员的攻略(适合自学编程的网站)

随着信息时代、大数据时代、人工智能的发展&#xff0c;程序员这个行业也被推到了社会的浪尖上。人们对程序员的评价褒贬不一&#xff0c;而且各个程序员的编程水平和能力也参差不齐。程序员这个行业是一个要求自我进步的行业&#xff0c;对编程者本身的能力要求高&#xff0c;…

可以免费自学编程的12个网站

很多人包括一些企业家&#xff0c;和市场营销人员都认为学习编程对一个人走向成功十分有帮助。在过去的一年里&#xff0c;我一直在学习编程。它有助我成为一个更好的创业者&#xff0c;我甚至可以提供一些帮助&#xff0c;当我的团队需要解决一些bug的时候。 现在&#xff0c…

创建第一个asp.net网站

标题:创建第一个asp.net网站 摘要:通过对微软Visual Studio 2008的简单操作介绍。指导您使用Visual Web Developer 来创建简单页,演示了vs开发asp.Net的基本技术。 难度:10 很早就想学习asp.Net了,断断续续的拖了一年了,这阵电脑升级了下决心,努力学习asp.Net,比…

简单数据预测—使用Python训练回归模型并进行预测(转自蓝鲸网站分析博客)

&#xfeff;&#xfeff; 使用Python训练回归模型并进行预测 回归分析是一种常见的统计方法&#xff0c;用于确定不同变量间的相互关系。在Excel中可以通过数据分析菜单中的回归功能快速完成。本篇文章将介绍在python中使用机器学习库sklearn建立简单回归模型的过程。 准备工作…

用PHP制作静态网站的模板框架

模板能够改善网站的结构。本文阐述如何通过PHP 4的一个新功能和模板类&#xff0c;在由大量静态HTML页面构成的网站中巧妙地运用模板控制页面布局。 提纲&#xff1a; 分离功能和布局 避免页面元素重复 静态网站的模板框架 分离功能和布局 首先我们来看看应用模板的两个主…

网站备案全攻略(二)

非经营性网站备案攻略   首先需要说明&#xff0c;非经营性网站备案是完全免费的&#xff0c;而有些虚拟主机商会故意把事情说的很严重&#xff0c;最主要的是他根本不告诉你可以自己免费注册&#xff0c;以收取代理费用。备案的方式有两种&#xff0c;一种是登陆信息产业部备…

网站备案全攻略(三)

4.接下来是填写网站的备案信息。&#xff08;图4&#xff09;“所属接入服务提供者”的添加是在操作框中输入你的网站空间服务商的名称&#xff08;若是主机托管或专线&#xff0c;可以输入托管商或电信部门的名称&#xff09;&#xff0c;然后进行查询&#xff0c;随后选中按下…

网站备案全攻略(四)

电子公告服务专项申请文档。笔者以前写的电子公告服务专项审批申请文档&#xff0c;最终通过了申请。http://www.thinkjam.org/bbs/showthread.php?t2449。 备案电子证书的使用 收到备案通过的通知后&#xff0c;还需要正确的放置网站备案电子证书&#xff0c;才算是完成了网站…

在程序中实现网站链接和发送邮件(zz)

越来越多的程序员喜欢在自己编写的程序中加上网站或电子信箱的链接。用户只需点击鼠标&#xff0c;即可自动打开浏览器并链接到指定的URL地址&#xff0c;或是打开邮件客户程序的“新建窗口”&#xff0c;甚至连收件人、邮件主题、邮件正文都可以替用户填好。 如果希望用户能够…

Digg粉丝列出十大最受欢迎网站

原文&#xff1a;http://tech.sina.com.cn/i/2007-04-15/15101465778.shtml Digg首页 导语&#xff1a;Digg是美国著名的科技类新闻聚合网站&#xff0c;用户可以把自己看到的新闻等各种信息推荐到该网站&#xff0c;Digg会按照用户推荐次数来排列链接。该网站的一名“粉丝”根…

TOP10:十大建站开源程序,你知几个?

原文&#xff1a;http://www.topdig.net/blog/archives/501

矢量设计风格网站欣赏

原文&#xff1a;http://blog.guoshuang.com/showlog.asp?cat_id32&log_id5822