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

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

<p class="imgtitle">
<a href="attachment.php?aid=48812&amp;k=176431dd98231d60e6614082ac2ce5b9&amp;t=1387945675&amp;fid=4&amp;nothumb=yes&amp;sid=4398hG%2BmnnlYG4UAc6QgsughqDa2Svrm7MIu8tShB1s%2F3QI" onmouseover="showMenu(this.id,false,2)" id="aid48812" class="bold" target="_blank">img-fa6533d1b03dee194f0636a69eea5c64.jpg</a>

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

 def getImg(html,page):
reg = r'attachment.php?.+" '
imgre = re.compile(reg)
imglist = imgre.findall(html)
x = 0
import os
path = "d:\\picture\\"
title = "%s\\" %page
new_path = os.path.join(path, title)
if not os.path.isdir(new_path):
os.makedirs(new_path) for imgurl in imglist:
imgurl=imgurl[:imgurl.find('"')]
imgurl=imgurl.rstrip('"')
print imgurl
imgurl="http://xxxxxx/"+imgurl
f = urllib2.urlopen(imgurl)
with open(new_path+"%s.gif" % x, "wb") as code:
code.write(f.read())
x = x + 1

以上用的是最简单的正则匹配,将解析后的图片下载保存到D盘picture目录。
 有时候论坛是要登录的,所以处理模拟登录这块根据你所处理的网站会稍许不同,实现模拟登陆功能大部分是提交登陆表单。这里就要用到python发送登陆表单请求消息了,利用httpfox插件获取登陆的post信息,

 ef login(weburl,username,password,page):
cookie_support= urllib2.HTTPCookieProcessor(cookielib.CookieJar())
opener = urllib2.build_opener(cookie_support, urllib2.HTTPHandler)
urllib2.install_opener(opener)
postdata=urllib.urlencode({
'loginfield':'username',
'formhash':gethash(weburl),
'password':password,
'username':username,
'questionid':0,
'answer':'',
'loginsubmit':'true'})
postdata=postdata.encode(encoding='UTF8')
header = {'User-Agent':'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)'}
posturl=weburl
req = urllib2.Request(posturl,postdata)
result = urllib2.urlopen(req).read()
Url="http://xxxxxxxxxx/viewthread.php?tid=14943&extra=page%3D1&page="
Url=Url+("%s" % page)
result=getHtml(Url);
return result

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

 def gethash(url):
page = urllib2.urlopen(url)
html = page.read()
reg = r'name="formhash" value=".+"'
hashre = re.compile(reg)
hashvalue=hashre.findall(html)
pos=(hashvalue[0]).index('value=')
hash=(hashvalue[0])[pos+6:]
print hash.strip('"')
return hash.strip('"')

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

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

python简易爬虫来实现自动图片下载的更多相关文章

  1. Python 实用爬虫-04-使用 BeautifulSoup 去水印下载 CSDN 博客图片

    Python 实用爬虫-04-使用 BeautifulSoup 去水印下载 CSDN 博客图片 其实没太大用,就是方便一些,因为现在各个平台之间的图片都不能共享,比如说在 CSDN 不能用简书的图片, ...

  2. 爬虫系列1:python简易爬虫分析

    决定写一个小的爬虫系列,本文是第一篇,讲爬虫的基本原理和简易示例. 1.单个网页的简易爬虫 以下爬虫的主要功能是爬取百度贴吧中某一页面的所有图片.代码由主要有两个函数:其中getHtml()通过页面u ...

  3. 一篇文章教会你利用Python网络爬虫获取电影天堂视频下载链接

    [一.项目背景] 相信大家都有一种头疼的体验,要下载电影特别费劲,对吧?要一部一部的下载,而且不能直观的知道最近电影更新的状态. 今天小编以电影天堂为例,带大家更直观的去看自己喜欢的电影,并且下载下来 ...

  4. Python简易爬虫爬取百度贴吧图片

    通过python 来实现这样一个简单的爬虫功能,把我们想要的图片爬取到本地.(Python版本为3.6.0) 一.获取整个页面数据 def getHtml(url): page=urllib.requ ...

  5. 【Python】Python简易爬虫爬取百度贴吧图片

    通过python 来实现这样一个简单的爬虫功能,把我们想要的图片爬取到本地.(Python版本为3.6.0) 一.获取整个页面数据 def getHtml(url): page=urllib.requ ...

  6. python简易爬虫实现

    目的:爬取昵称 目标网站:糗事百科 依赖的库文件:request.sys.beautifulSoup4.imp.io Python使用版本:3.4 说明:参考http://cn.python-requ ...

  7. python网络爬虫抓取网站图片

    本文介绍两种爬取方式: 1.正则表达式 2.bs4解析Html 以下为正则表达式爬虫,面向对象封装后的代码如下: import urllib.request # 用于下载图片 import os im ...

  8. Python多线程爬虫爬取网页图片

    临近期末考试,但是根本不想复习!啊啊啊啊啊啊啊!!!! 于是做了一个爬虫,网址为 https://yande.re,网页图片为动漫美图(图片带点颜色........宅男福利 github项目地址为:h ...

  9. python +requests 爬虫-爬取图片并进行下载到本地

    因为写12306抢票脚本需要用到爬虫技术下载验证码并进行定位点击所以这章主要讲解,爬虫,从网页上爬取图片并进行下载到本地   爬虫实现方式: 1.首先选取你需要的抓取的URL:2.将这些URL放入待抓 ...

随机推荐

  1. js数组倒叙输出

    第一种:是直接利用代码进行输出 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"&g ...

  2. RHEL 6.0服务器安装Oracle 11G R2 最终版

    RHEL6安装Oracle 11g R2最终版 结合网上教程 服务器实战所得 1.使用DVD做yum源新建dvd挂载目录[root@fxq-dp ~]# mkdir /media/iso进入到DVD挂 ...

  3. 挂载windows共享文件夹

    sudo mount -o username=用户名,password=密码 //本机IP/共享目录 ~/挂载目录

  4. javascript 实现tab菜单切换

    <!DOCTYPE html> <html> <head> <title></title> </head> <body s ...

  5. 学习ios【1】Objective-C 基本语法

    一 了解一下,找参考资料 1.看书学习object-c语法,第一本看的是<objective-c程序设计>. 2.官网:https://developer.apple.com/librar ...

  6. 图片上传预览 (URL.createObjectURL)

    知识预备:1. URL.createObjectURL() 静态方法会创建一个 DOMString,它的 URL 表示参数中的对象.这个 URL 的生命周期和创建它的窗口中的 document 绑定. ...

  7. EF中的Code First

     一些概念 Ÿ POCO POCO(Plain Old CLR Object)的概念是从java的POJO借用而来,而两者的含义是一致的,不同的仅仅是使用的语言不一样.所以POCO的解释就是“Plai ...

  8. C#.NET微信公众账号接口开发系列文章整理--微信接口开发目录,方便需要的博友查询

    前言: 涉及微信接口开发比较早也做的挺多的,有时间的时候整理了开发过程中一些思路案例,供刚学习微信开发的朋友参考.其实微信接口开发还是比较简单的,但是由于调试比较麻烦,加上微信偶尔也会给开发者挖坑,并 ...

  9. cacti web页面访问 settings出错

    查看apache错误日志: 错误信息Mon Dec 26 11:00:48.241653 2016] [:error] [pid 32607] [client 192.168.10.79:65009] ...

  10. php生成图片缩略图,支持png透明

    注:此功能依赖GD2图形库 PHP生成缩略图类   <?php /* * desc: Resize Image(png, jpg, gif) * author: 十年后的卢哥哥(http://w ...