昨天做了一个煎蛋网妹子图的爬虫,个人感觉效果不错。但是每次都得重复的敲辣么多的代码(相比于Java或者其他语言的爬虫实现,Python的代码量可谓是相当的少了),就封装了一下!可以实现对批量网址以及单个网址的爬虫!


核心代码

# coding:UTF-8# 导入我们需要的网络模块,正则表达式模块,以及产生随机数的模块
import urllib2,urllib,re,random# 根据传入的URL网址,获得该网址对应的全部的html页面(纯网页,并没有做任何的解析)
def getHtml(url,headers) :request = urllib2.Request(url,headers=headers)response = urllib2.urlopen(request)page = response.read()return page# 根据之前获得那个url对应的网页信息,将这张网页里面包含的所有的含有<img src=".+\.jpg"/>的url存储到一个列表中
def getImageUrls(page):reg = r'src="(.+?\.jpg)"'imageReg = re.compile(reg)img_urls = re.findall(imageReg,page)return img_urls# 这是个测试的方法,并没有实际的价值。列出来的目的只是为了纪念一下,最终功能实现的这个过程,仅此!
# def getTotalImageUrls(original_url,headers):
#     totalImageUrls = []
#     for item in range(1980, 1990):
#         original_url += original_url + str(item)
#         page = getHtml(original_url,headers)
#         images_url = getImageUrls(page)
#         totalImageUrls.append(images_url)
#         return totalImageUrls# 根据给定的路径,文件名,将指定的数据(这里是一张图片,是的。一张图片)写入到文件中。需要注意的是每次都需要关闭file
def writeToFile(path,name,data):file = open(path+name,'wb')file.write(data)file.close()print name+" has been Writed Succeed!"# 下载图片,并且调用刚才的  writeToFile(path,name,data): 函数。将图片直接写到对应的路径下面
# 这里借助于一个random模块,为了产生图片之间尽量不重复的文件名,以防止文件的覆盖或者出现其他的问题
def downloadImages(images_url,path,headers) :for i, item in enumerate(images_url):everypicture = getHtml(item,headers)# 此处下载之后的文件使用了item来命名是为了避免图片的覆盖writeToFile(path, str(i+random.randint(1,100000000)) + ".jpg", everypicture)# 提供单个url网址内图片的下载
def singleImageDownload(outputPath,targeturl,headers) :originalurl = targeturlpage = getHtml(originalurl,headers)images_url = getImageUrls(page)downloadImages(images_url,path,headers)# 提供批量下载的函数,对未成功下载的提示未成功下载语句
def batchImageDownload(outputPath, originalurl, headers, start, end):for item in range(2000, 4000):try:originalurl = 'http://bizhi.souutu.com/mnbz/' + str(item) + '.html'page = getHtml(originalurl)images_url = getImageUrls(page)downloadImages(images_url,headers)except:print str(item) + str(' web site cannot be spidered! Sorry!')continue# --------------------------------------------------------------------------------------------------
# 下面是我们的测试代码,仅仅拿单个url页面做了个测试,亲测好使headers = {'referer':'http://bizhi.souutu.com/mnbz/3712.html','User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.94 Safari/537.36'
}path = "F:\\pachong\\bizhi\\"
url = 'http://bizhi.souutu.com/mnbz/3712.html'
singleImageDownload(path,url,headers)

后话

这里并没有使用类来进行封装,没有用BeautifulSoup的原因是我还没学到

无奈.装傻~
( ̄▽ ̄)~* ( ̄▽ ̄)" ╮(╯▽╰)╭ ╮( ̄▽ ̄)╭ 

但是咧,这在Python中是不妨碍滴,照样爬嘛,(^__^) 嘻嘻……
我是新手,代码中可能有不恰当的地方,欢迎批评指正!

Python爬虫! 单爬,批量爬,这都不是事!相关推荐

  1. python爬虫抓取图片-简单的python爬虫教程:批量爬取图片

    python编程语言,可以说是新型语言,也是这两年来发展比较快的一种语言,而且不管是少儿还是成年人都可以学习这个新型编程语言,今天南京小码王python培训机构变为大家分享了一个python爬虫教程. ...

  2. Python爬虫学习,批量爬取下载抖音视频

    这篇文章主要为大家详细介绍了python批量爬取下载抖音视频,具有一定的参考价值,感兴趣的小伙 项目源码展示 ''' 注:如果你对python感兴趣,我这有个学习Python基地,里面有很多学习资料, ...

  3. 【python爬虫实战】批量爬取站长之家的图片

    概述: 站长之家的图片爬取 使用BeautifulSoup解析html 通过浏览器的形式来爬取,爬取成功后以二进制保存,保存的时候根据每一页按页存放每一页的图片 第一页:http://sc.china ...

  4. 给小白的python爬虫入门之批量爬取别样网的视频素材

    网络爬虫,听起来很神秘,其实也不过如此,简单来说,只要网站开放了端口即用户能访问这个网站,那么无论这个网站的反爬机制做的有多么好,只要你的技术够,总会有机会破解它. 换句话说,不是你的网站很安全,而是 ...

  5. python爬虫实例方法(批量爬取网页信息基础代码)

    文章目录 前言 一.爬虫实例 0.爬取深圳租房信息 1.爬取深圳算法岗位信息 2.爬取猫图片(基于 selenium库 模拟人自动点击) 3.爬取小说纳兰无敌并生成词云 二.用到的库 1.正则表达式 ...

  6. python爬虫实战-如何批量爬取唯品会商品信息>>>

    第一步.打开唯品会网站  https://www.vip.com.然后随意搜索一种商品,比如"键盘",搜索之后下拉发现页面URL没有发生改变,但是商品信息在不断加载,那么这就是动态 ...

  7. python爬虫5:批量爬取照片到对应的文件夹中

    爬取练习: 案例:表情包网站 先查看具体网页进行分析: 可以看到表情包下还有具体的页面,也就是我们想要爬取的表情了 爬取思路:1.爬取具体表情包下的图片-->2.进行封装后在爬取整个页面--&g ...

  8. Python爬虫: 单网页 所有静态网页 动态网页爬取

    Python爬虫: 单网页 所有静态网页 动态网页爬取 前言:所有页代码主干均来自网上!!!感谢大佬们. 其实我对爬虫还挺感兴趣的,因为我玩instagram(需要科学上网),上过IG的人都知道IG虽 ...

  9. Python爬虫【三】爬取PC网页版“微博辟谣”账号内容(selenium单页面内多线程爬取内容)

    专题系列导引   爬虫课题描述可见: Python爬虫[零]课题介绍 – 对"微博辟谣"账号的历史微博进行数据采集   课题解决方法: 微博移动版爬虫 Python爬虫[一]爬取移 ...

  10. python爬取图片教程-推荐|Python 爬虫系列教程一爬取批量百度图片

    Python 爬虫系列教程一爬取批量百度图片https://blog.csdn.net/qq_40774175/article/details/81273198# -*- coding: utf-8 ...

最新文章

  1. Spring学习笔记_IOC
  2. 《树莓派渗透测试实战》——总结
  3. linux snap 沙盒化软件包格式 简介
  4. java 外部覆盖内部配置,Spring 与自定义注解、外部配置化的结合使用
  5. go基础语法:数组定义
  6. Spring入门(一)之简介
  7. Proxy error: Could not proxy request /api/ from localhost:8080 to http://localhost:80
  8. 前端:HTML/05/lt;meta标记,XHTML简介及其编写规范,表格标签(lt;table)及其相关标签(lt;tr,lt;td或lt;th)
  9. android的视图动画,Android 视图动画(视图动画代码实现)
  10. 硬件开发板-嵌入式开发
  11. C# 设置Windows程序窗口为穿透状态
  12. 几何语言点C是ab的中点,数学几何定理符号语言[教学备用]
  13. Navicat连接不上远程服务器MySQL提示10038
  14. c语言错误 应输入声明,C++错误:应输入声明
  15. vue element-ui el-upload去除按delete 键可删除提示
  16. GTP编译报错,需要增加IBUF
  17. Oracle rac集群笔记
  18. 【肝帝一周总结:全网最全最细】十万字python教程,学不会找我!教到你会为止!!内容超多,建议收藏慢慢看!
  19. Tribon快捷按钮图标格式
  20. aelf Enterprise 0.8.0 beta有奖公测,“Bug奖金计划”重磅开启

热门文章

  1. Excel 中使用数据透视表 Pivot Table
  2. struts 依赖包
  3. Drools学习 入门实例
  4. linux 查看cpu和磁盘使用情况
  5. SQL语句来查询今天、昨天、7天内、30天的数据,经典!
  6. 深入解析QML引擎, 第4部分: 自定义解析器
  7. sql语句(Oracle和sqlserver)
  8. javascript的数组之reduce()
  9. Ubuntu 16.04安装 sogou 遗留下的问题
  10. 保存一波集合框架的介绍