//生命太短 我用Python!

//Python真是让一直用c++的村里孩子长知识了!

这个仅仅是一个测试,成功抓取了某网站1000多张图片。

下一步要做一个大新闻 大工程

 #config = utf-8

 import urllib
import urllib2
import re
import os global CNT
CNT = 0 def getHtml(url): #! /usr/bin/env python
# -*- coding=utf-8 -*-
# @Author pythontab.com
#url="http://pythontab.com"
req_header = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11',
'Accept':'text/html;q=0.9,*/*;q=0.8',
'Accept-Charset':'ISO-8859-1,utf-8;q=0.7,*;q=0.3',
'Accept-Encoding':'gzip',
'Connection':'close',
'Referer':None #注意如果依然不能抓取的话,这里可以设置抓取网站的host
}
req_header_2 = {
'User-Agent':'Mozilla/5.0 (Windows NT 6.1; rv:28.0) Gecko/20100101 Firefox/28.0'
} req_timeout = 5
#status = urllib.urlopen(url).code
#print status
#if status != 200:
# print 'Http Error %s' % status
# return False req = urllib2.Request(url,None,req_header_2)
resp = urllib2.urlopen(req,None,req_timeout)
html = resp.read()
return html def getAllUrl(html):
reg = r'<a href="(.+)" target='
theurl = re.compile(reg)
url = re.findall(theurl,html)
return url def getNext(html):
reg = r"<a href='.+pai/(.+).html'"
nxtre = re.compile(reg)
nxt = re.findall(nxtre,html)
return nxt[0] def getName(html):
reg = r'<title>(.+)</title>'
nare = re.compile(reg)
name = re.findall(nare,html)
return name[0] def getImg(name,html):
global CNT reg = r'<img src="(.{0,80}\.jpg)" border="0"'
imgre = re.compile(reg)
imglist = re.findall(imgre,html) reg = r'src="(.{0,80}\.jpeg)" border'
imgre = re.compile(reg)
imglist.extend(re.findall(imgre,html)) reg = r"<img src='(.{0,80}\.jpg)'"
imgre = re.compile(reg)
imglist.extend(re.findall(imgre,html)) reg = r"<img src='(.{0,80}\.jepg)'"
imgre = re.compile(reg)
imglist.extend(re.findall(imgre,html)) local = '.\%s-[%sp]' % (name,len(imglist))
if os.path.exists(unicode(local,'utf-8')):
return unicode(local,'utf-8')+u'was existed' os.mkdir(unicode(local,'utf-8')) x = 0
for imgurl in imglist:
print imgurl
urllib.urlretrieve(imgurl,unicode(local+'\%s.jpg' % x,'utf-8'))
x+=1
CNT+=1 return unicode('%s: get %s pthoto(s)' % (name,x),'utf-8') def getAll(num):
global CNT
nxt = 164680
while num > 0: url = '---%s.html' % nxt
print nxt
html = getHtml(url)
nxt -= 1
num -= 1
if html == False:
print 'Error'
continue print getImg(getName(html),html) return 'done! %s photos!' % str(CNT) def getAll_update(index):
global CNT
num = CNT
urls = getAllUrl(getHtml(index)) for url in urls:
html = getHtml('---'+url)
print getImg(getName(html),html)
return 'done! %s photos!' % str(CNT-num) #print getAll(10)
#html = getHtml('---')
#print getNext(html) x = 3
while x < 50:
print getAll_update('---' % x)
x+=1 #print getAll_update('---')

header 伪装成浏览器

正则表达式 http://www.cnblogs.com/huxi/archive/2010/07/04/1771073.html    //我也是刚刚学

基本都是一路百度写出来的

Python入门-编写抓取网站图片的爬虫-正则表达式的更多相关文章

  1. 使用python来批量抓取网站图片

    今天"无意"看美女无意溜达到一个网站,发现妹子多多,但是可恨一个page只显示一张或两张图片,家里WiFi也难用,于是发挥"程序猿"的本色,写个小脚本,把图片扒 ...

  2. php远程抓取网站图片并保存

    以前看到网上别人说写程序抓取网页图片的,感觉挺神奇,心想什么时候我自己也写一个抓取图片的方法! 刚好这两天没什么事,就参考了网上一个php抓取图片代码,重点借鉴了 匹配img标签和其src属性正则的写 ...

  3. Python -- 网络编程 -- 抓取网页图片 -- 豆瓣妹子

    首先分析页面URL,形如http://dbmeizi.com/category/[1-14]?p=[0-476] 图片种类对应编号: 1:'性感', 2:'有沟', 3:'美腿', 4:'小露点', ...

  4. Python -- 网络编程 -- 抓取网页图片 -- 图虫网

    字符串(str)编码成字节码(bytes),字节码解码为字符串 获取当前环境编码:sys.stdin.encoding url编码urllib.parse.quote() url解码urllib.pa ...

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

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

  6. php 文件操作之抓取网站图片

    $str= file_get_contents("http://v.qq.com/");preg_match_all("/\<img\s+src=.*\s*\> ...

  7. 【转】详解抓取网站,模拟登陆,抓取动态网页的原理和实现(Python,C#等)

    转自:http://www.crifan.com/files/doc/docbook/web_scrape_emulate_login/release/html/web_scrape_emulate_ ...

  8. 利用wget 抓取 网站网页 包括css背景图片

    利用wget 抓取 网站网页 包括css背景图片 wget是一款非常优秀的http/ftp下载工具,它功能强大,而且几乎所有的unix系统上都有.不过用它来dump比较现代的网站会有一个问题:不支持c ...

  9. 百度图片爬虫-python版-如何爬取百度图片?

    上一篇我写了如何爬取百度网盘的爬虫,在这里还是重温一下,把链接附上: http://www.cnblogs.com/huangxie/p/5473273.html 这一篇我想写写如何爬取百度图片的爬虫 ...

随机推荐

  1. 常用的移动前端webapp交互细节

    #常用的移动前端webapp交互细节 ##select的表现方式 ###PC端 select控件在传统PC桌面已经存在多年,由于在IE6等低版本浏览器容易造成层级错乱,一直被一些UI框架所抛弃,而用d ...

  2. 《React Native 精解与实战》书籍连载「iOS 平台与 React Native 混合开发」

    此文是我的出版书籍<React Native 精解与实战>连载分享,此书由机械工业出版社出版,书中详解了 React Native 框架底层原理.React Native 组件布局.组件与 ...

  3. Python学习第十五篇——类继承和类实例化

    学习Python类时,我们明白了类的本质,以及所谓的面向对象编程思想强调的对事物本身的属性,我们对某一类事物进行描述——采用了很多方法,这些方法描述了类的属性(比如猫科动物的眼睛,四肢,是否哺乳类等等 ...

  4. Day4 Python基础之数据类型(三)

    计算机中,一切皆为对象 世界万物,皆为对象,一切对象皆可分类 ------------------------------------我是分割线---------------------------- ...

  5. 现代程序设计 homework-10

    经过大半学期的学习和练习, 我们把学到的东西综合起来. 通过<现代程序设计>这门课,自己的确学到了好多东西.其实并不是说讲课有多棒,一是因为讲课的次数其实并不多,二是讲课的内容其实感觉并没 ...

  6. 封装day.js

    封装day.js import dayjs from 'dayjs' import 'dayjs/locale/zh-cn' import relativeTime from 'dayjs/plugi ...

  7. 实验楼----PHP大法

    地址:http://www.shiyanbar.com/ctf/2008 题目:http://ctf5.shiyanbar.com/DUTCTF/index.php

  8. httpd sshd firewalld 服务后面的d的意思

    在操作系统中,一般系统的服务都是以后台进程的方式存在,而且都会常驻系统中,直到关机才结束.这类服务也称Daemon,在Linux系统中就包含许多的Daemon. 判断Daemon最简单的方法就是从名称 ...

  9. Oracle SQL优化原则

    原文:http://bbs.landingbj.com/t-0-240353-1.html 1.选用适合的 ORACLE 优化器 2.访问 Table 的方式 3.共享SQL语句 共享的语句必须满足三 ...

  10. python3 操作页面上各种元素的方法

    (1)       控制浏览器 ①控制浏览器窗口大小set_window_size(宽,高) 打开浏览器全屏maximize_window() ②控制浏览器后退back().前进forward() ③ ...