Python入门-编写抓取网站图片的爬虫-正则表达式
//生命太短 我用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入门-编写抓取网站图片的爬虫-正则表达式的更多相关文章
- 使用python来批量抓取网站图片
今天"无意"看美女无意溜达到一个网站,发现妹子多多,但是可恨一个page只显示一张或两张图片,家里WiFi也难用,于是发挥"程序猿"的本色,写个小脚本,把图片扒 ...
- php远程抓取网站图片并保存
以前看到网上别人说写程序抓取网页图片的,感觉挺神奇,心想什么时候我自己也写一个抓取图片的方法! 刚好这两天没什么事,就参考了网上一个php抓取图片代码,重点借鉴了 匹配img标签和其src属性正则的写 ...
- Python -- 网络编程 -- 抓取网页图片 -- 豆瓣妹子
首先分析页面URL,形如http://dbmeizi.com/category/[1-14]?p=[0-476] 图片种类对应编号: 1:'性感', 2:'有沟', 3:'美腿', 4:'小露点', ...
- Python -- 网络编程 -- 抓取网页图片 -- 图虫网
字符串(str)编码成字节码(bytes),字节码解码为字符串 获取当前环境编码:sys.stdin.encoding url编码urllib.parse.quote() url解码urllib.pa ...
- python网络爬虫抓取网站图片
本文介绍两种爬取方式: 1.正则表达式 2.bs4解析Html 以下为正则表达式爬虫,面向对象封装后的代码如下: import urllib.request # 用于下载图片 import os im ...
- php 文件操作之抓取网站图片
$str= file_get_contents("http://v.qq.com/");preg_match_all("/\<img\s+src=.*\s*\> ...
- 【转】详解抓取网站,模拟登陆,抓取动态网页的原理和实现(Python,C#等)
转自:http://www.crifan.com/files/doc/docbook/web_scrape_emulate_login/release/html/web_scrape_emulate_ ...
- 利用wget 抓取 网站网页 包括css背景图片
利用wget 抓取 网站网页 包括css背景图片 wget是一款非常优秀的http/ftp下载工具,它功能强大,而且几乎所有的unix系统上都有.不过用它来dump比较现代的网站会有一个问题:不支持c ...
- 百度图片爬虫-python版-如何爬取百度图片?
上一篇我写了如何爬取百度网盘的爬虫,在这里还是重温一下,把链接附上: http://www.cnblogs.com/huangxie/p/5473273.html 这一篇我想写写如何爬取百度图片的爬虫 ...
随机推荐
- 常用的移动前端webapp交互细节
#常用的移动前端webapp交互细节 ##select的表现方式 ###PC端 select控件在传统PC桌面已经存在多年,由于在IE6等低版本浏览器容易造成层级错乱,一直被一些UI框架所抛弃,而用d ...
- 《React Native 精解与实战》书籍连载「iOS 平台与 React Native 混合开发」
此文是我的出版书籍<React Native 精解与实战>连载分享,此书由机械工业出版社出版,书中详解了 React Native 框架底层原理.React Native 组件布局.组件与 ...
- Python学习第十五篇——类继承和类实例化
学习Python类时,我们明白了类的本质,以及所谓的面向对象编程思想强调的对事物本身的属性,我们对某一类事物进行描述——采用了很多方法,这些方法描述了类的属性(比如猫科动物的眼睛,四肢,是否哺乳类等等 ...
- Day4 Python基础之数据类型(三)
计算机中,一切皆为对象 世界万物,皆为对象,一切对象皆可分类 ------------------------------------我是分割线---------------------------- ...
- 现代程序设计 homework-10
经过大半学期的学习和练习, 我们把学到的东西综合起来. 通过<现代程序设计>这门课,自己的确学到了好多东西.其实并不是说讲课有多棒,一是因为讲课的次数其实并不多,二是讲课的内容其实感觉并没 ...
- 封装day.js
封装day.js import dayjs from 'dayjs' import 'dayjs/locale/zh-cn' import relativeTime from 'dayjs/plugi ...
- 实验楼----PHP大法
地址:http://www.shiyanbar.com/ctf/2008 题目:http://ctf5.shiyanbar.com/DUTCTF/index.php
- httpd sshd firewalld 服务后面的d的意思
在操作系统中,一般系统的服务都是以后台进程的方式存在,而且都会常驻系统中,直到关机才结束.这类服务也称Daemon,在Linux系统中就包含许多的Daemon. 判断Daemon最简单的方法就是从名称 ...
- Oracle SQL优化原则
原文:http://bbs.landingbj.com/t-0-240353-1.html 1.选用适合的 ORACLE 优化器 2.访问 Table 的方式 3.共享SQL语句 共享的语句必须满足三 ...
- python3 操作页面上各种元素的方法
(1) 控制浏览器 ①控制浏览器窗口大小set_window_size(宽,高) 打开浏览器全屏maximize_window() ②控制浏览器后退back().前进forward() ③ ...