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 这一篇我想写写如何爬取百度图片的爬虫 ...
随机推荐
- zookeeper-监控与优化-《每日五分钟搞定大数据》
本文的命令和配置都是基于zookeeper-3.4.6版本.优化很多时候都是基于监控的,所以把这两个内容写在了一起,慢慢消化. 监控 简单地说,监控无非就是获取服务的一些指标,再根据实际业务情况给这些 ...
- Python—randonm模块介绍
random是python产生伪随机数的模块 >>> random.randrange(1,10) #返回1-10之间的一个随机数,不包括10 >>> random ...
- Rikka with Subset HDU - 6092 (DP+组合数)
As we know, Rikka is poor at math. Yuta is worrying about this situation, so he gives Rikka some mat ...
- session与cookie的区别以及HTML5中WebStorage理解
一.session与cookie的区别 二.HTML5中WebStorage理解 WebStorage的目的是克服由cookie所带来的一些限制,当数据需要被严格控制在客户端时,不需要持续的将数据发回 ...
- echarts各个配置项详细说明总结
https://blog.csdn.net/sinat_34492035/article/details/70258557 https://blog.csdn.net/qq_34908167/arti ...
- python 中的super()继承,搜索广度为先
一.python中类的继承 1.1 单继承 在python 中我们可以这样来定义一个类:及继承它的子类 class Father: def __init__(self, mes): #1 父类的ini ...
- mybatis之批量插入
一.导入功能优化 普通for循环,对于导入大量数据时非常耗时.可以通过Mybatis的批量插入功能提高效率.每批次导入的数据不能太多,否则会报错.通过测试发现,每批次200条为宜. 测试结果: 开启事 ...
- shell脚本--CGI获取请求数据(GET / POST)
Case 1: 获取地址栏传递的参数(即通过GET方式) CGI的环境变量中有个QUERY_STRING,可以获取地址栏传递的参数,该参数可以是手动加上的,也可以是通过表单的get方式提交的,比如下面 ...
- MySQL 高可用性—keepalived+mysql双主
MySQL 高可用性—keepalived+mysql双主(有详细步骤和全部配置项解释) - 我的博客 - CSDN博客https://blog.csdn.net/qq_36276335/articl ...
- Vmware由于centos升级内核不可运行(C header files matching your running kernel were not found)的解决方案
C header files matching your running kernel were not found. Refer to your distribution's documentati ...