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 这一篇我想写写如何爬取百度图片的爬虫 ...
随机推荐
- 了解可执行的NPM包
NPM是Node.js的包管理工具,随着Node.js的出现,以及前端开发开始使用gulp.webpack.rollup以及其他各种优秀的编译打包工具(大多数采用Node.js来实现),大家都开始接触 ...
- 二十一、当锚点遇到fixed(margin和padding)
当锚点点击跳转的时候,如果上方有fixed,锚点跳转会默认跳转到top为0的地方,有一部分就被遮挡了 解决方法:(像素值随便给的) 给锚点跳转到的具体内容加padding-top:-50px:marg ...
- JS 执行上下文
先看个小例子 function fn(){ console.log(a);//undefined; var a = 1; } fn(); 为什么打印出来的是 undefined 呢? 执行上下文概念 ...
- Integer的NPE问题
- 将iso镜像转换为docker镜像
为什么不用官方的镜像? 不是不想使用,而是官方镜像提供的功能实在是太少了,不信的话,你pull一个ubuntu:latest的进行,你看有没有wget.curl.ssh这些功能,就连最简单的ifcon ...
- Linux kernel support docker storage driver aufs
How to make docker use aufs in CentOS 7? - Server Faulthttps://serverfault.com/questions/650208/how- ...
- Linux之常用软件-服务
在使用Linux系统的时候,经常要使用一些功能,但是并不是系统自带的一些功能,这个时候就需要我们进行扩展安装一些软件. 1)telnet 检测telnet-server的rpm包是否安装 [root ...
- myeclipse部署报错报空指针异常
hib4.1+spring3+struts2项目 项目运行报错,把WEB-INF/classes目录删除后,想再重新编译并自动部署.再自动部署时总是提示错误: Errors occurred duri ...
- CMake--静态库与动态库构建
小结内容 建立一个静态库和动态库,提供 HelloFunc 函数供其他程序编程使用, HelloFunc 向终端输出Hello World 字符串. 安装头文件与共享库. 1.代码与CMakeList ...
- MVC最全jar包
<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> & ...