//生命太短 我用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. ASP.NET Core 添加区域步骤(详细)

    1 前言 早就想总结一下,但是没时间,这次有时间了,就详细的把步骤写出来. 2 步骤 2.1 添加区域 右键项目->添加->区域,如图1: 区域名称:Ceshi 添加完之后解决方案管理器会 ...

  2. C#代码中插入X86汇编

    这两天在看C# SIMD相关的东西, 在爆栈上面搜到一段代码, 表示很震惊, 还是得贴出来… [UnmanagedFunctionPointer(CallingConvention.StdCall)] ...

  3. StanfordPOSTagger的用法

    或者: 然后, 由说明文档可知,nltk.tag.stanford module是与斯坦福标识符交互的模块.要到https://nlp.stanford.edu/software下载Tagger mo ...

  4. Redis服务端的搭建(初级)

    前方低能,仅适合入门级菜鸟阅读,大神大牛通通闪开! 前言:redis经常被用来做缓存(原因自行科普),基于学习的需要自己搭建了一个redis服务器,考虑到项目的分布式部署,所以前期开始的时候,redi ...

  5. 软工网络15团队作业4——Alpha阶段敏捷冲刺

    Deadline: 2018-4-29 10:00PM,以提交至班级博客时间为准. 根据以下要求,团队在日期区间[4.16,4.29]内,任选8天进行冲刺,冲刺当天晚10点前发布一篇随笔,共八篇. 另 ...

  6. Servlet 使用ServletConfig对象来配置Servlet

    ServletContext和ServletConfig的关联 相同点: 1.都可以用来配置Servlet 2.都可以写在web.xml中. 区别点: 1.ServletContext对象,对于所有的 ...

  7. 从Mongo导出数据库到Excel

    在MongoDB的安装目录的bin文件夹下打开命令行: ./mongoexport -d kugou_db -c songs -f rank,singer,song,time --type=csv - ...

  8. MySQL 性能调优之SQL

    原文:http://bbs.landingbj.com/t-0-245451-1.html 对于SQL的优化,我们主要提供调整执行计划.优化SQL的方法有:缩短访问的路径.尽早过滤数据.尽可能减少排序 ...

  9. IdentityServer4【QuickStart】之设置和概述

    设置和概述 有两个基本的方式来开启一个新的IdentityServer项目: 从头开始 从asp.net Identity模板开始 如果你从头开始,我们提供了一些基于内存中构建的存储,所以你不必一开始 ...

  10. Arrays.copyOf() 和 System.arrayCopy()分析

    java数组的拷贝四种方法:for.clone.System.arraycopy.Arrays.copyof public class Test1 { public static void main( ...