0.准备

  所用到的模块:

urllib.request,获取源码
beautifulsoup4(bs4),网页抓取数据
安装bs4,python3 -m pip install beautifulsoup4 
查看,python3 -m pip show beautifulsoup4

   

1.bs4基本功能

如何获取标签的数据? 对象+标签名称
如何获取文件的内容? prettify

2.字符串格式化

%s 占位符 {}.format
print('http://www.dbmeinv.com/?pager_offset=%s' %2)
print('http://www.dbmeinv.com/?pager_offset={}'.format(2))

3.如何获取网页源码

urllib.request
urlopen
read

4.反爬

网站禁止爬虫,所以获取不到想要的内容,或者请求失败
那么,这是就需要获取用户代理池信息,加上头部信息,模拟浏览器进行访问
请求头中找:User-Agent

5.获取图片 

src后面都是图片路径,get

   

图片的标签,find_all

6.下载

urlretrieve(link, 路径)
如果获取到的图片src是相对路径,需要通过字符串拼接完整  

7.多页

for in range()

8.源码

from bs4 import BeautifulSoup
import urllib.request
x = 1 def crawl(url):headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'}req = urllib.request.Request(url, headers=headers) # 创建对象page = urllib.request.urlopen(req,timeout=20) # 设置超时contents = page.read().decode('utf-8') # 获取源码# print(contents)soup = BeautifulSoup(contents, 'html.parser')my_girl = soup.find_all('img') for girl in my_girl: # 遍历link = girl.get('src') # 获取到src的值,即图片链接,如果图片链接是相对路径,还需要‘协议 + 主机名 + 端口号 + link’拼接完整print(link) # 打印获取到的图片urlglobal x urllib.request.urlretrieve(link, 'image\%s.jpg'%x) # x +=1print('正在下载第%s张图片'%x)x +=1for page in range(1, 3): # 爬取第1-2页的图片# print(page)# url = 'http://www.dbmeinv.com/?pager_offset=%s'%page # 也可以写%durl = 'http://www.dbmeinv.com/?pager_offset={}'.format(page)crawl(url)
print('恭喜你,图片下载完成啦!')

 

9.程序运行中 

  

10.结果

  

转载于:https://www.cnblogs.com/uncleyong/p/6892688.html

py3+urllib+bs4+反爬,20+行代码教你爬取豆瓣妹子图相关推荐

  1. 100行代码教你爬取斗图网(Python多线程队列)

    100行代码教你爬取斗图网(Python多线程队列) 前言 根据之前写的两篇文章,想必大家对多线程和队列有了一个初步的了解,今天这篇文章就来实战一下,用多线程 + 队列 爬取斗图网的全网图片. 你还在 ...

  2. 猫眼html源码,50 行代码教你爬取猫眼电影 TOP100 榜所有信息

    点击上方"CSDN",选择"置顶公众号" 关键时刻,第一时间送达! 今天,手把手教你入门 Python 爬虫,爬取猫眼电影 TOP100 榜信息. 作者 | 丁 ...

  3. 50 行代码教你爬取猫眼电影 TOP100 榜所有信息

    点击上方"CSDN",选择"置顶公众号" 关键时刻,第一时间送达! 今天,手把手教你入门 Python 爬虫,爬取猫眼电影 TOP100 榜信息. 作者 | 丁 ...

  4. 基于python的证件照_20行代码教你用python给证件照换底色的方法示例

    1.图片来源 该图片来源于百度图片,如果侵权,请联系我删除!图片仅用于知识交流. 2.读取图片并显示 imread():读取图片: imshow():展示图片: waitkey():设置窗口等待,如果 ...

  5. 简单20行代码爬取王者荣耀官网1080p壁纸

    简单20行代码爬取王者荣耀官网1080p壁纸 # -*- coding: utf-8 -*- # @Time : 2020/12/13 18:08 # @Author : ningfangcong i ...

  6. 20行代码爬取王者荣耀全英雄皮肤!让你享受白嫖的快乐!

    引言 王者荣耀大家都玩过吧,没玩过的也应该听说过,作为时下最火的手机MOBA游戏,咳咳,好像跑题了.我们今天的重点是爬取王者荣耀所有英雄的所有皮肤,而且仅仅使用20行代码即可完成. 准备工作 爬取皮肤 ...

  7. 人脸检测算法代码python_Python有多强大!20行代码实现人脸检测与识别

    题记:大二的时候发现人生苦短,所以信了拍神,开始学Python.学了大半年之后成功转行做前端了.来写个教程帮助大家入门Python. Python优点 Python是一种简单易学.功能强大的编程语言, ...

  8. 20行代码发一篇NeurIPS:梯度共享已经不安全了

    整理 | 夕颜,Jane 出品 | AI科技大本营(ID:rgznai100) [导读]12 月 8 日-14 日,NeurIPS 2019 在加拿大温哥华举行,和往常一样,今年大会吸引了数万名专家参 ...

  9. php横排代码,20行代码原生js实现文字横向轮播

    20行代码实现文字横向轮播效果 1 页面布局代码 恭喜793765***获得 50元超市充值卡卡奖励 恭喜793765***获得 50元超市充值卡卡奖励 恭喜793765***获得 50元超市充值卡卡 ...

  10. 《看聊天记录都学不会C语言?太菜了吧》(14)这么神奇?我写了20行代码竟然一行就可以搞定?

    好消息2020年4月13日晚7.30我在CSDN开播,等你来聊天 预约连接:https://live.csdn.net/room/A757291228/MJWK0Gem 本系列文章将会以通俗易懂的对话 ...

最新文章

  1. 创建 OVS vlan101 并部署 instance - 每天5分钟玩转 OpenStack(139)
  2. 人造肌肉机械臂太逼真引热议,举7kg哑铃“肌肉”清晰可见,网友:《西部世界》...
  3. 理解Netty中的零拷贝(Zero-Copy)机制
  4. VTK:Utilities之ArrayCalculator
  5. 英山往事之为母亲办六十大寿
  6. ArcGIS将CAD等高线转换为TIN/DEM数据
  7. 经典面试题(47):以下代码将输出的结果是什么?
  8. ERRORS:*: (auth.E003) ‘User.username‘ must be unique because it is named as the ‘USERNAME_FIELD
  9. 使用javamail 发送邮件
  10. springboot和vue data数据为空_常见数据结构的 Python 实现(建议收藏)
  11. 禁用Windows 10系统更新
  12. ArcGIS操作小技巧(七)之制作漂亮的萤火虫图
  13. UPS电源扩展功能一UPS干节点通讯接口扩展板,你了解吗?
  14. 文件比较软件修改比较文件时间戳方法
  15. 心理学与生活 -人格与动机
  16. 安装 Ubuntu 21.04 后必备的绝佳应用大合集(持续更新中)
  17. 第三方短信平台服务提供商是什么?
  18. SQLI DUMB SERIES-2
  19. 租用游艇问题(pta)
  20. SNS交换机(OEM博科FC交换机)的端口状态及排查流程说明

热门文章

  1. 8255矩阵键盘C语言,8255驱动矩阵键盘和数码管程序
  2. 电路基础-二阶(second -order) 电路
  3. 汽车技术市场动态分析
  4. 基于MongoDB开发的物流系统(简易版)
  5. 以太网和令牌环网的区别
  6. 常见卫星汇总--期待大神补充下载地址
  7. 软件测试流程五个阶段
  8. 阿里巴巴早期发展简史
  9. 推荐子龙山人的emacs视频教程
  10. 【唯美日出win7热门主题】