520到了,作为一个python程序员,必须整点肤白貌美的爬虫代码给你们~
马上520就快到啦~
整点好看的给你们看下~
直接开搞~

代码流程
模拟浏览器向服务器发送一个http请求,网站接收到请求后返回数据。
在写爬虫代码的时候一定先要去模拟浏览器访问,因为现在的网站当接收到http请求后会校验当前请求是否是一个浏览器,如果是,允许访问,如果不是,禁止访问!
环境啥的我就不说了,还是老样子~
首先把我们要用的包导进去
import os
# 自动创建文件夹
import requests
# requests 爬虫包 需要下载 pip install requests
from bs4 import BeautifulSoup
# 网页选择器 pip install bs4
然后我们就要开始模拟浏览器
python学习交流群:660193417###
headers = {
'user-agent':
'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36',
# 反盗链
'referer': 'https://www.mzitu.com/'
}
既然我们要下载,当然要有文件夹去保存对吧,这里就实现自动创建文件夹,不用我们去额外创建。
def get_girls(url):
# 自动创建文件夹
if not os.path.exists('./学习资料/'):
os.mkdir('./学习资料/')
当然,为了不让你的小秘密被别人看到,咱们这里就把它命名为学习资料吧~
我们现在来发送请求,http协议中 有几种请求方法:
- get 获取数据
- post 数据提交 [账号密码提交]
html = requests.get(url, headers=headers).text
print(html)
对刚刚抓取到的数据进行二次筛选
需要两个参数,想要二次提取的网页 html变量临时保存了。
html解析库 lxml pip install lxml
html解析库可以将html代码转成我们的python对象
soup = BeautifulSoup(html, 'lxml')
通过刚刚分析得出一个结论,一张图片是由img标签保存的,li标签包含一个img标签。如果我们获取了所有的li标签,相当于获取到了所有的img标签,因为一个ul标签包含了所有的li标签,所以获取一个ul就相当于获取到了所有的li标签。
遍历所有的li标签
all_list = soup.find('ul', id='pins').find_all_next('li')
for _ in all_list:
girl_title = _.get_text()
girl_url = _.find('img')['data-original']
print(girl_title, girl_url)
这个时候就可以开始下载了
response = requests.get(girl_url, headers=headers)
fileName = girl_title + '.jpg'
print('正在保存图片:', girl_title)
with open('./学习资料/' + fileName, 'wb') as f:
f.write(response.content)
当然,只下载一页的话当然不过瘾,咱们这里就来实现翻页下载,当然,别爬多了,克制一下自己。
代码虽好,但还是要克制一下自己哟~
for page in range(1, 256):
url = 'https://www.mzitu.com/page/%s' % page
get_girls(url)
你要下载多少页,直接改成多少页就好了。
兄弟们学习python,有时候不知道怎么学,从哪里开始学。掌握了基本的一些语法或者做了两个案例后,不知道下一步怎么走,不知道如何去学习更加高深的知识。
那么对于这些大兄弟们,我准备了大量的免费视频教程,PDF电子书籍,以及视频源的源代码!
还会有大佬解答!
包括本文源代码、对应视频都在这里了
点击蓝色字体即可获取这些福利
欢迎加入,一起讨论 一起学习!
我们看看结果

只能打码了,委婉一点。
文件夹我也不打开了,大家等下自己去试试,然后再慢慢打开把哈哈~
兄弟们,如果看完了感觉还过的去的话,记得来个三连,
你的三连就是我最大的动力!
有啥问题和建议都可以在评论区一起交流~
520到了,作为一个python程序员,必须整点肤白貌美的爬虫代码给你们~的更多相关文章
- 做为一个Python程序员的基本素养
今天在学习的过程中,明白了一些不是Python标准所必须要做的事情,二是做为一个合格的Python程序员应该所遵从的一些规范 分享给大家,有不足的地方请大家指正,此下是我学习的一点心得: 1.在给变量 ...
- 为什么用 Java:一个 Python 程序员告诉你
这篇文章专门给程序员写的,普通读者慎入.原作者:Kevin Sookocheff 译者:Celia Zhen,原文点击文末链接. 每当我告诉别人我一直在用Java工作时,大家的反应都是: “纳尼!Ja ...
- 成为python程序员,对疫情过后的毕业生来说,真是一个不错的方向吗?
Python最近几年,一直被炒得很火,这其中有商业因素,但更重要的是即将到来的人工智能时代,而python就恰好是最适合的编程语言. 所以无论是在职的人,还是在校的学生,都想着跟上这一趋势,但,在今年 ...
- python入门(4)第一个python程序
python入门(4)第一个python程序 在交互式环境的提示符>>>下,直接输入代码,按回车,就可以立刻得到代码执行结果.现在,试试输入100+200,看看计算结果是不是300: ...
- 万能的林萧说:我来告诉你,一个草根程序员如何进入BAT。
引言 首先声明,不要再问LZ谁是林萧,林萧就是某著名程序员小说的主角名字. 写这篇文章的目的其实很简单,算是对之前LZ一篇文章的补充和完善. 之前LZ写过一篇<回答阿里社招面试如何准备,顺便谈谈 ...
- 3.第一个python程序
学习任何一门语言的第一步,首先要写个'hello world',这算是程序员的一个传统.但在写之前,还有注意几个问题. 首先,python是一门脚本语言,而脚本语言的特点就是:我们写的代码会先由解释器 ...
- 介绍Python程序员常用的IDE和其它开发工具
概述 “工欲善其事,必先利其器”,如果说编程是程序员的手艺,那么IDE就是程序员的吃饭家伙了. IDE 的全称是Integration Development Environment(集成开发环境), ...
- python笔记:#002#第一个python程序
第一个 Python 程序 目标 第一个 HelloPython 程序 Python 2.x 与 3.x 版本简介 执行 Python 程序的三种方式 解释器 -- python / python ...
- Python程序员常用的IDE和其它开发工具
概述 “工欲善其事,必先利其器”,如果说编程是程序员的手艺,那么IDE就是程序员的吃饭家伙了. IDE的全称是Integration Development Environment(集成开发环境),一 ...
随机推荐
- Java语言学习day18--7月24日
###01get和set方法 * A.get和set方法 * 年龄已被私有,错误的值无法赋值,可是正确的值也赋值不了,这样还是不行,那肿么办呢?按照之前所学习的封装的原理,隐藏后,还需要提供访问方式. ...
- javascript中的宏任务和微任务(一)
一.宏任务和微任务有哪些 宏任务:setTimeout,setInterval,ajax,dom,宏任务是由浏览器提供的 微任务:promise,async/await,微任务是由es6提供的 二.微 ...
- JS_进阶-遍历对象属性、数组输出、Math、正则表达式匹配
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="U ...
- 分享一个JDK批量异步任务工具CompletionService,超好用
摘要:当需要批量提交异步任务,推荐CompletionService.CompletionService将线程池Executor和阻塞队列融合,让批量异步任务管理更简单. 本文分享自华为云社区< ...
- 【ACM程序设计】并查集
并查集 并查集(Union-find Sets)是一种非常精巧而实用的数据结构,它主要用于处理一些不相交集合的合并问题.一些常见的用途有:求连通子图.求最小生成树的Kruskal算法和求最近公共祖先( ...
- 重新审视C# Span<T>数据结构
先谈一下我对Span的看法, span是指向任意连续内存空间的类型安全.内存安全的视图. Span和Memory都是包装了可以在pipeline上使用的结构化数据的内存缓冲器,他们被设计用于在pipe ...
- 在博客文章中使用mermaid 定义流程图,序列图,甘特图
概述 Mermaid(美人鱼)是一套markdown语法规范,用来在markdown文档中定义图形,包括流程图.序列图.甘特图等等. 它的官方网站是 https://mermaid-js.github ...
- python模块,邮件推送交换机error级别以上log,django前端展示
前情概要 原syslog服务器只收集不推送日志,可以实时展示,服务器在海外内网,办公网做的有分流,到日志服务器的流量送到香港,其余流量国内,疫情期间在家办公,每次连接需要拨海外l2tp,挂着梯子访问国 ...
- MinIO学习
1.Minio及背景 Minio是一个开源的分布式文件存储系统,它基于 Golang 编写,虽然轻量,却拥有着不错的高性能,可以将图片.视频.音乐.pdf这些文件存储到多个主机,可以存储到多个Linu ...
- break、continue、return中选择一个,我们结束掉它
在平时的开发过程中,经常会用到循环,在写循环的过程中会有很多判断条件及逻辑,你知道如何结束一个循环吗?在java中有break.continue.reture三个关键字都可以结束循环,我们看下他们 ...