[day2]python网络爬虫实战:爬取美女写真图片(增强版)

l> 我的新书《Android App开发入门与实战》已于2020年8月由人民邮电出版社出版,欢迎购买。点击进入详情

文章目录

  • 1.开发环境
  • 2.第三方库
  • 3.实现
    • 1.分析url格式
    • 2.分析图片格式
    • 3.保存图片到本地
    • 4.输入页数
  • 4.优化
    • 1.防止被封
    • 2.多线程下载
    • 3.便捷获取图片地址
  • 5.效果
  • 6.Github源码
  • 7.Scrapy版

今天我们继续爬取妹子图片,通过另一种方式来实现。
上一篇 我们介绍了怎么爬取美女图片,但是还是有一些可以改进的地方。

  1. 怎么防止被封
  2. 是否可以利用多线程加快下载速度
  3. 有没有更方便的方法获取网页图片地址

1.开发环境

  1. IDE: PyCharm 2021.2.1 (Professional Edition)
  2. Python: 3.9.7

2.第三方库

  1. requests:网络请求
  2. lxml.etree:分析HTML特征,获取图片地址

3.实现

1.分析url格式

我们再找个网站来分析下。
比如这个网站首页是这样的:https://sc.chinaz.com/tupian/ribenmeinv.html
打开第二页后变成:https://sc.chinaz.com/tupian/ribenmeinv_2.html
也就是第二页后的格式是index_{N}.html

2.分析图片格式

Chrome通过Ctrl + U查看源码。找到图片列表相关的代码区域:
在这里插入图片描述
这个时候我们就可以通过etree的xpath来解析图片格式:

html.xpath("//div[@id='container']/div[@class='box picblock col3']/div/a/img/@src2")

3.保存图片到本地

我们可以通过with open方式来保存图片:

# 访问图片
data = requests.get(image_url).content
# 保存图片
with open(r"C:/meinv/xxx.jpeg", "wb") as file_object:file_object.write(data)

4.输入页数

pages = int(input("请输入总页数:"))

4.优化

1.防止被封

通过模拟浏览器的特征,让网站认为这条请求是通过浏览器发送的。
我们可以在请求的时候加上一个header字段:

header = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.81 Safari/537.36" }

2.多线程下载

如果打算下载多页上的图片,我们可以考虑将每一页交给一个线程去处理,这样多页就可以行下载本页的图片了。

for page in range(pages):t = threading.Thread(target=fetch, args=(page + 1,))t.start()

3.便捷获取图片地址

xpath是一种路径语言,特别适合XML格式的文档。XML是一种树形结构的文档,xpath就提供了在树形结构文档中查找节点的能力。
而正则表达式可以处理任何格式的字符串文档,通过文本特征来查找指定的数据。

大多数情况下,树的搜索是比字符串搜索快的。

xpath的语法参见:https://www.runoob.com/xpath/xpath-syntax.html

5.效果

在这里插入图片描述

6.Github源码

[day2]python网络爬虫实战:爬取美女妹子写真图片(增强版)

7.Scrapy版

[day4]python网络爬虫实战:爬取美女写真图片(Scrapy版)

欢迎关注我的技术公众号:国民程序员,我们的目标:输出干货

  1. 每天分享原创技术文章
  2. 海量免费技术资料和视频学习资源
  3. 分享赚钱门道,带领程序员走向财务自由
图片名称

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

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

相关文章

Python写网络爬虫(一)

文章目录 网络爬虫简介爬虫在使用场景中的分类爬虫的矛与盾需要知道的协议常用请求头信息常用响应头信息requests模块如何使用requests:(requests模块的编码流程)新手实战演练正式入门爬虫get 方法的常用参数:简易网页采集器 首先…

那个顶撞雷军还爱在办公室打乒乓的副总裁——周光平

文章原创来自洞见网:http://www.localonline.com.cn/start/people/712.html,转载请注明出处。 近日,东南大学(原南京工学院)1977级校友周光平、严星夫妇捐资2000万元,在母校设立“平星基金”,用于支持信息科学与工程学…

雷军—我十年的程序员生涯

内容转自:http://blog.sina.com.cn/s/blog_4b0e23c90100b2qf.html 最近,和UCWEB同事讨论,怎么才能把我们的UCWEB做到极致。我说,“手机上的平台非常多,如果想做好,需要足够多、足够优秀的程序员。优秀的程序…

雷军谈人生三段低谷:站店卖货、泡吧泡论坛、错失互联网第一波浪潮!

自2020年小米十周年雷军进行了人生首次公开演讲以来,他似乎想要养成一种习惯,每年都举办一次年度演讲。 继2020年“相信自己,一往无前”和2021年“我的梦想,我的选择”两场年度演讲后,这不,在小米迎来12周…

中国第一程序员求伯君,WPS之父,雷军也佩服的人

中国第一程序员求伯君,WPS之父,最强码农的传奇经历 转载知乎冷冷读书 https://www.zhihu.com/people/leng-leng-80-6 2018年底,金山举办创业三十年庆典,三位创始人,求伯君、雷军和张旋龙相继到场。庆生中,雷…

用互联网思想武装自己---雷军

两年前的4月6日,我们几个人,在北四环的银谷大厦静悄悄的创办了小米公司,一起喝了碗小米粥,就开始艰难的创业之旅。仅仅两年时间,小米在百度手机品牌排行榜排在前五名,也在淘宝销售排行榜名列前茅&#xff0…

身价10亿的程序员 雷军当年也为他打工——WPS之父 求伯君

他的前半生,值得我们每一个人深思。 在普通人眼里,他寂寂无名,只有年岁稍长的文化人,才听说过他传奇般的存在。 在IT人眼里,他是块活化石,中国第一的大旗除了他,没人敢抗! 他是求…

雷军主导小米管理层变革:创业派隐退 职业经理人上位

雷递网 雷建平 12月23日 岁末之际,在京东零售大幅调整后,小米也进行了一轮大调整。 小米集团内部邮件所示,小米总裁王翔将在月底卸任集团总裁职务退休,同时,继续作为高级顾问为公司服务。 小米集团总裁一职将由2019年加…

雷军与周鸿祎:两个九头鸟的战争

一场 智能手机 的口水大战将雷军和周鸿祎推到风口浪尖。有一句俗话叫“天上九头鸟,地上湖北佬”,来形容湖北人的精明、睿智。 小米科技董事长兼CEO雷军、奇虎360董事长周鸿祎同是湖北人。雷军1969年12月16日于湖北仙桃,一个教师家庭&#…

雷军的演讲以及产品发布

8月11号是小米的发布会,还有雷军的年度演讲。 因为工作冲突我没看直播,晚上回来看了公众号文章和知乎上的内容讨论,也看了发布的新产品。 雷军那个年代能够做上程序员一定是非常牛逼的人,而雷军是这些牛逼人的公司总经理&#xff…

雷军写代码水平如何?

3月30日,小米集团发布公告,公司拟成立一家全资子公司,负责智能电动汽车业务。首期投资为100亿元人民币,预计未来10年投资额100亿美元,而智能电动汽车业务的首席执行官依然由雷军担任。 雷军说:我愿意押上我…

雷军 1994 年写的代码

(给程序员的那些事加星标) 整合整理:程序员的那些事(id:iProgrammer) 前些天,「程序员的那些事」在趣图栏目中分享了《趣图:雷军的代码像诗一样优雅》。 有些网友在评论中质疑&#…

从小米科技的创始人、董事长、首席执行官雷军的代码水平说起

作为小米科技的创始人、董事长和首席执行官,雷军的名字如雷贯耳。那么作为技术员出身的雷军,他的代码水平如何,最近也成为网上的一个热点议题。 伴随这个热点议题一起出现的是雷军写于1994年的RAMinit程序源码。 ; (完整代码附后…

雷军 1994 年写的代码,你见过吗?厉害了!

作为小米科技的创始人、董事长和首席执行官,雷军的名字如雷贯耳。网上出现一篇“刘强东的代码水平如何”的文章,有网友在下面回复“代码只服雷军”。雷军的代码水平真的很牛吗? 原来雷军年轻的时候,也是一名程序员,而且一干就是…

Verilog面试题(一)——2020乐鑫科技数字IC(串转并、饮料售卖机)

文章目录 题目一:将一个串行执行的C语言算法转化为单拍完成的并行可综合verilog。思路代码知乎数字芯片实验室牛客讨论区 题目二:饮料售卖机思路E课网代码(牛客讨论区) 题目一:将一个串行执行的C语言算法转化为单拍完成…

乐鑫科技2022提前批-数字IC类6.29

1/10[单选|3分] 十六进制数0x12345678为big-endian格式,对应的little-endian格式是: 0x87654321 0x78563412 0x56781234 其他都不正确 2/10[单选|3分] X,Y是两个无符号定点小数&…

乐鑫科技数字芯片2017

1. setup time、hold time 含义,并说明setup time和hold time会出现负值的原因 setup time是指在触发器的时钟信号触发之前,数据需要稳定不变的时间 hold time 是指在触发器的时钟信号触发之后,数据需要稳定不变的时间 在考虑时钟skew的…

乐鑫科技数字芯片2020

&#xff08;1&#xff09;序列发生器&#xff0c;产生周期性的"0010110111"序列 module xlgen (clk,rst,Q);input clk ; input rst ;output Q ; reg Q ; reg [9:0] Q_r ;always ( posedge clk or posedge rst) beginif (rst 1) beginQ < 1b0;Q_r < 10b00…

乐鑫科技数字IC提前批2021

整理乐鑫科技2021届招聘的数字IC提前批笔试题&#xff0c;并做了部分答案和解析&#xff0c;有问题的地方欢迎一起探讨。 一&#xff0e;单选题 1.关于跨时钟域电路的设计&#xff0c;以下说法正确的是: A: 信号经两级D触发器同步后即可进行跨时钟域传递 B: 跨时钟域电路存在亚…