转载原文博客地址

首先得解决环境和工具的问题
Python基础教程
Python3基础教程
大家也可以去慕课网看视频学习哦,关于选择Python2还是Python3的问题,上手的话还是直接选择3吧。

关于爬虫

爬虫就是在互联网中执行爬取有用信息的程序,总的工作流程如下:
找到爬虫入口->获取目标链接->下载网页-> 解析网页 -> 获取价值信息 ->存库(文件保存)操作

首先给自己一个伟大的小目标吧!或许明天的UC头条就是,震惊!一16岁编程奇才爬取某社区2亿条用户数据。

开始吧

我们的目标就从一个图片网站开始吧,坐好啦,老司机要发车了 –> mzitu.com

http://www.mzitu.com/all 每日更新页面给了我们一个很好的爬虫入口,良心站长,F12进入浏览器调试模式,更方便开发人员观察

找到入口和目标链接之后开始下载网页

# -*- coding: UTF-8 -*-
from urllib import request#目标抓取网页
src = 'http://www.mzitu.com/all'
#浏览器请求头(大部分网站没有这个请求头可能会报错)
mheaders = {'User-Agent':"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1"}#读取一个网页
def getHtml(url):req = request.Request(url,headers=mheaders) #添加headers避免服务器拒绝非浏览器访问page = request.urlopen(req)html = page.read()return html.decode('utf-8')  # python3 python2版本直接返回htmlprint(getHtml(src))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

urllib.request.urlopen()请求你个网页,是不是so easy,各位看官,你老厉害了。

拿到这个入口网页之后,我们顺着主线走,不要迷路了,那么入口网页里面用有的价值是什么了,当然是妹子,恩我们要奔着套路地址去,这里我们需要用到beautifulsoup4 ,当然高手一般都是使用正则表达式的,可是菜鸟真的合适吗,虽然bs4效率低一点,但是对开发人员友好啊。获取bs4方法,前提是你需要配置好python和pip(pip工具是python自带的)的环境变量,这里不赘述了

pip install beautifulsoup4

好了,继续前行吧。去拿到我们的子目标,首先我们得明确子目标

# -*- coding: UTF-8 -*-
from urllib import request
from bs4 import BeautifulSoup#目标抓取网页
src = 'http://www.mzitu.com/all'
#浏览器请求头(大部分网站没有这个请求头可能会报错)
mheaders = {'User-Agent':"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1"}#读取一个网页
def getHtml(url):req = request.Request(url,headers=mheaders) #添加headers避免服务器拒绝非浏览器访问page = request.urlopen(req)html = page.read()return html.decode('utf-8')  # python3 python2版本直接返回html#从入口爬取所有的目标链接
def getallUrl(html):#构造一个bs对象soup = BeautifulSoup(html, 'html.parser')#使用bs对象寻找class为all的div 然后再寻找这些div里面的a标签,可能我们需要多试几次才能准确的getall = soup.find('div',class_='all').find_all('a')for li in all:print(li)getallUrl(getHtml(src))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

行了,我们又有目标了,遍历这些目标,最后在子目标里面寻找最终目标,对最终目标进行存库(文件操作)即可完成我们这次探险了!

最后一段旅程需要各位生手自行探索,老衲先行告退。对了,地图拿走不谢:

# -*- coding: UTF-8 -*-
from urllib import request
from bs4 import BeautifulSoup
import uuid
import time#目标抓取网页
src = 'http://www.mzitu.com/all'
#浏览器请求头(大部分网站没有这个请求头可能会报错)
mheaders = {'User-Agent':"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1"}#读取一个网页
def getHtml(url):req = request.Request(url,headers=mheaders) #添加headers避免服务器拒绝非浏览器访问page = request.urlopen(req)html = page.read()return html.decode('utf-8')  # python3 python2版本直接返回html#从入口爬取所有的目标链接
def getallUrl(html):#构造一个bs对象soup = BeautifulSoup(html, 'html.parser')#使用bs对象寻找class为all的div 然后再寻找这些div里面的a标签,可能我们需要多试几次才能准确的getall = soup.find('div',class_='all').find_all('a')print(len(all))#无聊打印点什么for li in all:subSrc = li.attrs['href']subHtml = getHtml(subSrc)subSoup = BeautifulSoup(subHtml, 'html.parser')page = subSoup.find('div', class_='pagenavi').find_all('span')#page[-2]是表示数组从右(末端数2个) maxpage拿到套图最后一页maxPage = page[-2].get_text()i = 1while (i <= int(maxPage)):time.sleep(0.08) #休息0.08s,防止服务器拒绝频繁请求tagetSrc = subSrc + '/' + str(i)tagetHtml = getHtml(tagetSrc)tagetSoup = BeautifulSoup(tagetHtml, 'html.parser')img = tagetSoup.find('div', class_='main-image').find('img')print(time.time())#无聊打印点什么#uuid()构造一个世界唯一字符串,为了防止文件重名name = img.attrs['alt'] + str(uuid.uuid4())imgsrc = img.attrs['src']print(imgsrc + "-----" + name)#无聊打印点什么try:#这里的指定存储路径,需要注意的是这里需手动创建文件夹,如需自动想、可以使用os库request.urlretrieve(imgsrc, 'D:\\meizi\\' + '%s.jpg' % name)  # 指定目录位置except BaseException:#捕获异常情况print('Error:there is something wrong!')# 遇到IOError: [Errno socket error] [Errno 10060]服务器拒绝频繁访问 阻塞1stime.sleep(1)try:request.urlretrieve(imgsrc, 'D:\\meizi\\' + '%s.jpg' % name)  # 指定目录位置except BaseException:print('Error:there is something wrong!over')# print(tagetSrc)i += 1print('end')
#开始
print('begin')
getallUrl(getHtml(src))
#结束
print('over')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65

成果

好了,这次旅行到此结束,对于这次初次旅程还满意吗?给各位老厉害的看官留几个宝箱吧:
1.这种方式爬取数据存在什么弊端?该怎么完善?
2.有什么方法提高爬取效率?
3.反面思考我们的web网站怎么防止被机器爬取数据?
4.我们的爬虫(机器)面对验证码,登录等问题怎么处理?

最后

谢谢站长

                    <link rel="stylesheet" href="http://csdnimg.cn/release/phoenix/production/markdown_views-68a8aad09e.css"><script>$(".MathJax").remove();</script><script type="text/javascript" src="//static.blog.csdn.net/mdeditor/public/res/bower-libs/MathJax/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script></div>

Python趴网站图片demo相关推荐

  1. python 登陆网站图片验证,用python登录带弱图片验证码的网站

    上一篇介绍了使用python模拟登陆网站,但是登陆的网站都是直接输入账号及密码进行登陆,现在很多网站为了加强用户安全性和提高反爬虫机制都会有包括字符.图片.手机验证等等各式各样的验证码.图片验证码就是 ...

  2. python 登陆网站图片验证_登陆需要密码以及图片验证的网站 如知乎

    [实例简介] 登陆知乎 这样需要输入密码以及验证图片的网站 [实例截图] 无.. [核心代码] def land_zhihu(url, id, password): opener = makeMyOp ...

  3. Python爬虫网站图片并下载到本地

    文章目录 先看效果 1.环境准备 2.要爬取的网站 3.程序源代码(可直接运行) 先看效果 1.环境准备 import requests import re 下载requests库: pip inst ...

  4. python获取网站图片_python获取网站图片

    # zhouxianglh 2013.05.03 python3.3 import urllib.request from html.parser import HTMLParser import r ...

  5. python爬网站图片教程_Python超简单的爬取网站中图片

    1.首先导入相关库 importrequestsimportbs4importthreading #用于多线程爬虫,爬取速度快,可以完成多页爬取import os 2.使用bs4获取html中的内容 ...

  6. python 第一行 报错_初学Python-只需4步,爬取网站图片

    很多人学习Python很重要的一个原因是,可以很简单的把一个网站的数据爬下来. 尤其是做我们这一行,产品经理,电商行业. 领导:弄一个买卖游戏周边商品的交易APP出来.我:行,那我们卖什么呀?领导:看 ...

  7. python抓取网站图片_利用python抓取网站图片

    看了网上关于python抓取网站图片的例子,所以自己也尝试着写一个,但是发现这个网站的src不是标准的路径,需要自己添加前面的目录地址,尝试了几次也不成功,所以希望有经验的朋友指导下. 本人是初学者, ...

  8. python批量读取图片gps位置_某少儿不宜网站图片拍摄位置分析,Python批量读取图片GPS位置!...

    原标题:某少儿不宜网站图片拍摄位置分析,Python批量读取图片GPS位置! 1. python读取图片exif属性中的GPS信息 智能手机或平板如果在拍照时开启定位服务,照片中就会记录拍照位置信息和 ...

  9. python爬虫,g-mark网站图片数据爬取及补坑

    应用python对g-mark网站图片数据爬取,同时但对于数据抓取失败的图片进行补坑(重新爬取操作),由于是日本网站,没有梯子访问的话,特别容易访问超时,比较合适的补坑操作是直接将数据采集到数据库,而 ...

最新文章

  1. 使用VMware虚拟机安装Windows8系统
  2. sql中varchar(n),nvarchar(n) 长度性能及所占空间分析
  3. CTFshow php特性 web108
  4. VAT code VAT NO.
  5. Python爬虫学习笔记(三)——正则表达式
  6. 洛谷 P1816 忠诚 ST函数
  7. 网站中公用头部与尾部
  8. 阿里云何川:开放兼容的云,计算巢帮助合作伙伴云化升级
  9. 动图:程序员才懂的这些!
  10. vhdl语言入门_从当初汇编、C语言入手,到如今FPGA开发已然十年,总结出“三多”!...
  11. 字符集与编码(九)——GB2312,GBK,GB18030
  12. log4j配置(转)
  13. CF 799B T-shirt buying
  14. 协程分析之 context 上下文切换
  15. jsoup教程_1 简介
  16. 搜狐畅游一面(c++)
  17. 图像特征:突出显示稀疏突出区域Image Signature:Highlighting Sparse Salient Regions
  18. RTKLIB MANUAL 之 Instructions 第一部分
  19. 下载官方 Win11、Win10 镜像 ISO 的方法
  20. 47、backtrader的一些基本概念---技术指标(indicator)的使用教程

热门文章

  1. JSP使用上传文件,并生产高清缩略图示例
  2. 皮卡丘为什么不进化_为什么神奇宝贝唯独皮卡丘没进化过?网友:看官方解释,竟无言以对!...
  3. 微信小程序云开发服务怎么关闭?
  4. Auto.js 9版本全分辨率找图
  5. Linuxer-quot;Linux开发人员自己的媒体quot;第五月稿件和赠书名单
  6. zerotier 部署及命令大全
  7. Bill课堂【二】——头脑风暴
  8. 汽车合同纠纷案例之拖延交货
  9. mysql的CURDATE() + 1,月底最后一天不生效的问题,踩坑中!
  10. 限时售价18.38万起 零跑C01重塑豪华新基准