python实现简单爬虫抓取图片

最近在学习python,正如大家所知,python在网络爬虫方面有着广泛的应用,下面是一个利用python程序抓取网络图片的简单程序,可以批量下载一个网站更新的图片,其中使用了代理IP的技术。

import urllib.request
import os
import random
def url_open(url):req=urllib.request.Request(url)#为请求设置user-agent,使得程序看起来更像一个人类req.add_header('User-Agent','Mozilla/5.0 (Windows NT 6.1; WOW64; rv:43.0) Gecko/20100101 Firefox/43.0')#代理IP,使用户能以不同IP访问,从而防止被服务器发现'''iplist=['1.193.162.123:8000','1.193.162.91:8000','1.193.163.32:8000']proxy_support=urllib.request.ProxyHandler({'http':random.choice(iplist)})opener=urllib.request.build_opener(proxy_support)opener.addheaders=[('User-Agent','Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.154 Safari/537.36 LBBROWSER')]urllib.request.install_opener(opener)'''response=urllib.request.urlopen(req)html=response.read()return html
def get_page(url):html=url_open(url).decode('utf-8')a=html.find('current-comment-page')+23b=html.find(']',a)#print(html[a:b])return html[a:b]def find_imgs(url):html=url_open(url).decode('utf-8')img_addrs=[]a=html.find('img src=')while a!=-1:b=html.find('.jpg',a,a+140)if b!=-1:if html[a+9]!='h':img_addrs.append('http:'+html[a+9:b+4])else:img_addrs.append(html[a+9:b+4])else:b=a+9a=html.find('img src=',b)for each in img_addrs:print(each+'我的打印')return img_addrsdef save_imgs(folder,img_addrs):for each in img_addrs:#print('one was saved')filename=each.split('/')[-1]with open(filename,'wb') as f:img=url_open(each)f.write(img)def download_mm(folder='ooxx',pages=10):os.mkdir(folder)os.chdir(folder)url="http://jandan.net/ooxx/"page_num=int(get_page(url))for i in range(pages):page_num=page_num-1page_url=url+'page-'+str(page_num)+'#comments'img_addrs=find_imgs(page_url)save_imgs(folder,img_addrs)if __name__=='__main__':download_mm()

完成

运行结果

结果

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

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

相关文章

m3u:直播流的html接近下载

转载于:http://en.wikipedia.org/wiki/M3U M3U is a computer file format that stores multimedia playlists. It is supported by many applications, including media players such as Windows Media Player, iTunes, Winamp, foobar2000, Totem and JuK. Conten…

【每日SQL打卡】​​​​​​​​​​​​​​​DAY 10丨换座位【难度中等】

活动介绍: 「数据仓库技术交流群」已经正式启动每日SQL打卡,帮助大家扎实基础,努力工作之余,别忘了自我提升。 欢迎报名和邀请小伙伴参与,一个人可能走得很快,但一群人会走得很远。 🍅题目汇总(…

5G之后是什么?

来源:IEEE电气电子工程师学会如果你听过有关5G的承诺它可为自动驾驶汽车和沉浸式虚拟现实保驾护航的宣传,估计你很快就会意识到下一代无线网络将需要承载多少数据。但是,工程师们是不是太专注于提供满足数据饥渴型应用程序需要的低延迟网络&a…

javaweb实现验证码功能

在javaweb的用户注册与登陆功能时,有时为了防止漏洞或者大量注册,可以使用验证码功能,下面是验证码的一个简单实现 验证码类 public class ValiImg extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletRespon…

int _tmain(int argc, _TCHAR* argv[])

argv接收从命令行传来的参数,在程序里可以通过argv[i]来使用。比方你要执行的.exe文件名为test,你在命令行中输入test 2 hello world! 那么在程序里argv[0]就是hello,argv[1]就是world!上面输入的2告诉程序一共有几个命令行参数,用argc表示,就…

【每日SQL打卡】​​​​​​​​​​​​​​​DAY 10丨买下所有产品的客户【难度中等】

活动介绍: 「数据仓库技术交流群」已经正式启动每日SQL打卡,帮助大家扎实基础,努力工作之余,别忘了自我提升。 欢迎报名和邀请小伙伴参与,一个人可能走得很快,但一群人会走得很远。 🍅题目汇总(…

数据洪流时代的芯片之变

芯片无所不在,没有芯片,就没有现代生活。 图片来源:百度图片来源:科学网摘要:自中兴事件发生以来,对于我国半导体及芯片产业一直存在两种截然相反的认识。自中兴事件发生以来,对于我国半导体及芯…

javamail实现邮箱验证功能

javamail是基于SMTP协议和POP3协议的邮件发送与接收系统,在用户注册与登陆的过程中,常需要用到邮箱验证功能,下面是基于javamail的一个简单实现 用户注册后通过servlet得到邮箱地址,并使用方法发送邮件 //校验用户名if(dao.find…

[zz]libev 简介

1 libev libev所实现的功能就是一个强大的reactor,可能notify事件主要包括下面这些: ev_io // IO可读可写ev_stat // 文件属性变化ev_async // 激活线程ev_signal // 信号处理ev_timer // 定时器ev_periodic // 周期任务ev_child // 子进程状态变化ev_fork // 开辟进…

我没有超能力,我只是用了这10个网站。

🍅 作者主页:不吃西红柿 🍅 简介:CSDN博客专家 & 总榜前十🏆、HDZ核心组成员。欢迎点赞、收藏、评论 🍅 粉丝专属福利:知识体系、面试题库、技术互助、简历模板。文末公众号领取 1、今日热…

干货 | 加速AI发展!一文了解GPU Computing

来源: 启迪之星上海摘要:英伟达的显卡对于游戏达人来说再为熟悉不过,并逐渐融入到我们的日常生活当中。英伟达的显卡对于游戏达人来说再为熟悉不过,并逐渐融入到我们的日常生活当中。近日,世界上第一款“光线追踪”GPU…

图解二叉树的Morris(莫里斯)遍历

二叉树的Morris(莫里斯)遍历 本文参考链接:https://leetcode.cn/problems/binary-tree-preorder-traversal/submissions/490846864/ 文章目录 二叉树的Morris(莫里斯)遍历模板代码前序遍历中序遍历后序遍历 Morris 遍历使用二叉树节点中大量指向 null 的指针&…

javaweb数据库操作

本文主要内容有C3P0数据库连接池,dbutils的使用,元数据的应用 在对数据库进行增删改查时,使用数据库连接池可以有效的提高效率,节省资源,C3P0是Apache组织提供的一个有效方式 C3P0的XML配置文件,文件名必…

PHP5.5中新增的参数跳跃和生成器功能介绍

生成器 目前&#xff0c;自定义迭代器很少使用&#xff0c;因为它们的实现&#xff0c;需要大量的样板代码。生成器解决这个问题&#xff0c;并提供了一种简单的样板代码来创建迭代器。 例如&#xff0c;你可以定义一个范围函数作为迭代器: <?phpfunction *xrange($sta…

【每日SQL打卡】​​​​​​​​​​​​​​​DAY 11丨产品销售分析 III【难度中等】

活动介绍&#xff1a; 「数据仓库技术交流群」已经正式启动每日SQL打卡&#xff0c;帮助大家扎实基础&#xff0c;努力工作之余&#xff0c;别忘了自我提升。另有超多CSDN 周边礼物相送。 欢迎报名和邀请小伙伴参与&#xff0c;一个人可能走得很快&#xff0c;但一群人会走得很…

瓜分340亿美元物联网芯片半导体市场!机会在这五大行业【附下载】| 智东西内参...

来源&#xff1a;智东西摘要&#xff1a;市场压力之下&#xff0c;物联网为工业、汽车、智慧城市、医疗健康和消费半导体提供了新的解决方案。半导体产业渗透了我们生活中的各个方面&#xff0c;从闹钟、微波炉到手机、笔记本。而现在&#xff0c;物联网技术正在为全球半导体市…

Android之数据库操作

安卓数据库帮助类 /*** 数据库帮助类&#xff0c;用于管理数据库* author Administrator**/ public class PersonSQLiteOpenHelper extends SQLiteOpenHelper {private String tag"PersonSQLiteOpenHelper";public PersonSQLiteOpenHelper(Context context) {//数据…

【每日SQL打卡】​​​​​​​​​​​​​​​DAY 11丨产品销售分析 II【难度简单】

活动介绍&#xff1a; 「数据仓库技术交流群」已经正式启动每日SQL打卡&#xff0c;帮助大家扎实基础&#xff0c;努力工作之余&#xff0c;别忘了自我提升。 欢迎报名和邀请小伙伴参与&#xff0c;一个人可能走得很快&#xff0c;但一群人会走得很远。 &#x1f345;题目汇总(…

用互联网大脑模型分析滴滴的战略意图和战术失误

作者&#xff1a;刘锋 互联网进化论作者&#xff0c;计算机博士滴滴出行与美国的Uber&#xff0c;本质上都是基于互联网的智能打车软件&#xff0c;让任何拥有家用汽车的司机都可以与出租车司机一样&#xff0c;服务于打车用户。 在滴滴&#xff0c;Uber出世之前的出租车行业…

Android数据存储之sharedpreferences与Content Provider

android中对数据操作包含有&#xff1a; file, sqlite3, Preferences, ContectResolver与ContentProvider前三种数据操作方式都只是针对本应用内数据&#xff0c;程序不能通过这三种方法去操作别的应用内的数据 其中sqlite3已经在上一节中讲述了&#xff0c;本节主要包含shar…