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 这一篇我想写写如何爬取百度图片的爬虫 ...
随机推荐
- RabbitMQ 3.6.1 升级至 3.7.9 版本(Windows 升级至Centos)
随着公司业务量的增加,原本部署在Windows服务器的RabbitMQ集群(3.6.1)总是出现莫名其妙的问题,经查询官方Issue,确认是RabbitMQ 3.6.1 版本的bug.查看从3.6.1 ...
- SVM(支持向量机)之Hinge Loss解释
Hinge Loss 解释 SVM 求解使通过建立二次规划原始问题,引入拉格朗日乘子法,然后转换成对偶的形式去求解,这是一种理论非常充实的解法.这里换一种角度来思考,在机器学习领域,一般的做法是经验风 ...
- position fixed 相对于父级定位
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 我的微信小程序第一篇(入门)
前言 微信小程序出来已经有一段时间了,已经有很多大牛都写过相关教程了,那么我为啥还要写这篇文章呢?其实仅仅是个人对微信开发的一个兴趣吧,觉得是个很有意思的事情,后面有时间可能会发更多关于小程序的文章, ...
- H5 marquee标签
39-marquee标签 内容 属性: direction: 设置滚动方向 left/right/up/down scrollamount: 设置滚动速度, 值越大就越快 loop: 设置滚动次数, ...
- c++入门之const初步理解
关于const,首先建立这样的一个认识:const并不是定义了一个常量,而是定义了在某种环境下只读的变量.下面我们来区分一些东西: ; const int*p = # *p = ; i ...
- awk+sed编程
- 关于Fatal error: Paletter image not supported by webp 报错
报错提示 Fatal error: Paletter image not supported by webp 原因是由于图片被非法编辑过(相对PHP来说)造成, 有可能是某些编辑图片的软件的格式与PH ...
- mysql_linux(centos7 mysql 5.7.19)
centos7 mysql 5.7.19安装 1.解压文件 [root@centos3 ~]# tar -zxvf mysql-5.7.19-linux-glibc2.12-x86_64.tar.g ...
- python之路--基础数据类型的补充与深浅copy
一 . join的用法 lst =['吴彦祖','谢霆锋','刘德华'] s = '_'.join(lst) print(s) # 吴彦祖_谢霆锋_刘德华 # join() "*" ...