菜鸟新人刚刚入住博客园,先发个之前写的简易爬虫的实现吧,水平有限请轻喷。

估计利用python实现爬虫的程序网上已经有太多了,不过新人用来练手学习python确实是个不错的选择。本人借鉴网上的部分实现加以改造实现网页图片地址提取和下载。首先找到你感兴趣的网页,以bbs论坛为例,查看网页的源代码发现图片下载的链接地址类似如下:

img-fa6533d1b03dee194f0636a69eea5c64.jpg

所以找到了属性href值就可以解析出我们的下载地址了(要加入当前url前缀才是绝对地址呦)。用python写个处理网页的函数可以这样

1 defgetImg(html,page):2 reg = r'attachment.php?.+"'

3 imgre =re.compile(reg)4 imglist =imgre.findall(html)5 x =06 importos7 path = "d:\\picture\\"

8 title = "%s\\" %page9 new_path =os.path.join(path, title)10 if notos.path.isdir(new_path):11 os.makedirs(new_path)12

13 for imgurl inimglist:14 imgurl=imgurl[:imgurl.find('"')]15 imgurl=imgurl.rstrip('"')16 printimgurl17 imgurl="http://xxxxxx/"+imgurl18 f =urllib2.urlopen(imgurl)19 with open(new_path+"%s.gif" % x, "wb") as code:20 code.write(f.read())21 x = x + 1

以上用的是最简单的正则匹配,将解析后的图片下载保存到D盘picture目录。

有时候论坛是要登录的,所以处理模拟登录这块根据你所处理的网站会稍许不同,实现模拟登陆功能大部分是提交登陆表单。这里就要用到python发送登陆表单请求消息了,利用httpfox插件获取登陆的post信息,

1 ef login(weburl,username,password,page):2 cookie_support=urllib2.HTTPCookieProcessor(cookielib.CookieJar())3 opener =urllib2.build_opener(cookie_support, urllib2.HTTPHandler)4 urllib2.install_opener(opener)5 postdata=urllib.urlencode({6 'loginfield':'username',7 'formhash':gethash(weburl),8 'password':password,9 'username':username,10 'questionid':0,11 'answer':'',12 'loginsubmit':'true'})13 postdata=postdata.encode(encoding='UTF8')14 header = {'User-Agent':'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)'}15 posturl=weburl16 req =urllib2.Request(posturl,postdata)17 result =urllib2.urlopen(req).read()18 Url="http://xxxxxxxxxx/viewthread.php?tid=14943&extra=page%3D1&page="

19 Url=Url+("%s" %page)20 result=getHtml(Url);21 return result

View Code

到这边都是比较简单实现的,稍微麻烦点的是请求表单中postdata中需要获取随机的hash值,因此首先要解析出你登陆界面中的那个formhash,这个用re模块简单解析处理一下就ok了

1 defgethash(url):2 page =urllib2.urlopen(url)3 html =page.read()4 reg = r'name="formhash" value=".+"'

5 hashre =re.compile(reg)6 hashvalue=hashre.findall(html)7 pos=(hashvalue[0]).index('value=')8 hash=(hashvalue[0])[pos+6:]9 print hash.strip('"')10 return hash.strip('"')

View Code

,以上就是用到的大部分函数了,当然解析网页还有更多的好用的模块比如beautifulsoup等等,简单研究一下应该就能实现一个简易的爬虫程序了。

第一次在园子写东西,写的比较乱,以后改进。接下来准备介绍一下如何用python实现一个RSS阅读器。

python自动下载图片_python简易爬虫来实现自动图片下载相关推荐

  1. python搞笑动态图_python小爬虫抓取搞笑图片

    大部分小程序都是基于py2.7的,我于是便想直接出一个py3.4最新版本的教程.大致看一下第一篇了解一下的一些概念性的东西以及bs4第三方库的使用.请参考文末. 我们的第一个小程序的相关要求: 目标: ...

  2. python requests下载图片_Python使用urllib库、requests库下载图片的方法比较

    我们知道,使用Python制作一个爬虫程序,requests库是一个不错的选择,requests发送网络请求非常简单,比较使用urllib库,使用requests库可以大大减少代码量,它还可以定制请求 ...

  3. python 下载图片损坏_爬虫爬取出的图片下载出错,图片文件直接损坏

    import requests import os, sys, stat from lxml import etree import time class HuangMan(): def __init ...

  4. python sub 不区分大小写_Python网络爬虫入门篇

    1. 预备知识 学习者需要预先掌握Python的数字类型.字符串类型.分支.循环.函数.列表类型.字典类型.文件和第三方库使用等概念和编程方法. Python入门篇:https://www.cnblo ...

  5. Python实训day04pm【网络爬虫(文本、图片)】

    Python实训-15天-博客汇总表 目录 1.网络爬虫 1.1.爬取文本 1.2.爬取图片 2.其他知识点 上午题目讲解 昨天的基础题目讲解 爬取非文本(图片) 1.网络爬虫 #bili 视频,爬下 ...

  6. python自动输入账号密码_Python如何基于selenium实现自动登录博客园

    这篇文章主要介绍了Python如何基于selenium实现自动登录博客园,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 需要做的准备: 本文章是使用 ...

  7. python爬取王者_Python爬取王者荣耀英雄图片及装备!你玩吗?

    在玩王者荣耀的时候一直想把装备合英雄的图片保存下来,但是官网的单个图片保存太慢一气之下写了个爬虫. 1.爬取装备 import requests from bs4 import BeautifulSo ...

  8. python 拼接图片_python使用PIL剪切和拼接图片

    本文实例为大家分享了python使用PIL剪切图片和拼接图片的具体代码,供大家参考,具体内容如下 因工作需要,接触到了PIL这个包,看其他人的博客踩了一些坑,有些博客并没有注明各个位置参数的含义,今天 ...

  9. python制作ico图标_python使用PythonMagic k将jpg图片转换成ico图片的方法

    python使用PythonMagic k将jpg图片转换成ico图片的方法 发布时间:2017-06-27 08:00 来源:互联网 当前栏目:网页设计教程 这篇文章主要介绍了python使用Pyt ...

  10. python实现视频网站_python实现各大视频网站电影下载

    一.前期准备 有时候我们想下载自己喜欢的电影,但很多时候要么需要安装客户端才能下载,或者干脆不提供下载的服务,很是不爽, 因此这里我们介绍使用python来实现网站的电影下载功能,凡是能在线观看的,都 ...

最新文章

  1. 优秀logo设计解析_优秀Logo设计!汽车类标志表现手法
  2. python xpath爬虫_Python爬虫(2):XPath语法
  3. lazadashopee代运营服务有哪些,能帮商家解决哪些问题?
  4. js 实现 点击图片刷新 验证码 看不清 换一张
  5. 题目47:最大公约数
  6. sql server高可用_SQL Server始终在线可用性组采访问题与解答
  7. mysql服务器磁盘空间耗尽_一次服务器磁盘空间不足导致的一系列问题
  8. java简单租车系统 慕课手记_Java租车系统(新手)
  9. 行政界线类型代码_行政区划代码的代码表
  10. 漏洞挖掘分析技术总结
  11. 多线程模拟龟兔赛跑游戏
  12. uni-app 生命周期
  13. 重庆5G最新规划:明年建成3万个5G基站,力争主城区5G全覆盖
  14. java audit模块实现_Linux安全审计功能的实现——audit详解
  15. AutoJs学习-快手组队助力脚本
  16. html 晃动图标动画,SVG+CSS3 摇晃的铃铛动画图标
  17. google海底光缆图_Google 又规划了三条海底光缆,还嫌它的云服务速度不够快
  18. 度娘计算机cpu,电脑组装:6核12线程CPU,4400元电脑配置推荐,性能超值!
  19. SSM实现Java版百度网盘系统
  20. linux篇【3】:Linux 环境基础开发工具yum,vim,gcc,makefile,git

热门文章

  1. 对象的生命周期回顾篇
  2. Vert.x Web
  3. 通过反射访问private的属性或方法
  4. [POI2006]Tet-Tetris 3D
  5. php 连接redis服务器
  6. django学习遇到的问题解决方式
  7. IOS开发学习笔记027-UITableView 使用模型对象
  8. cocos2d-x将背景色改为白色
  9. AAAI'22 | 多模态摘要任务中的知识蒸馏和分层语义关联
  10. 惊呆了!这一操作将让NLP再次腾飞!