//生命太短 我用Python!

//Python真是让一直用c++的村里孩子长知识了!

这个仅仅是一个测试,成功抓取了某网站1000多张图片。

下一步要做一个大新闻 大工程

  1. #config = utf-8
  2.  
  3. import urllib
  4. import urllib2
  5. import re
  6. import os
  7.  
  8. global CNT
  9. CNT = 0
  10.  
  11. def getHtml(url):
  12.  
  13. #! /usr/bin/env python
  14. # -*- coding=utf-8 -*-
  15. # @Author pythontab.com
  16. #url="http://pythontab.com"
  17. 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',
  18. 'Accept':'text/html;q=0.9,*/*;q=0.8',
  19. 'Accept-Charset':'ISO-8859-1,utf-8;q=0.7,*;q=0.3',
  20. 'Accept-Encoding':'gzip',
  21. 'Connection':'close',
  22. 'Referer':None #注意如果依然不能抓取的话,这里可以设置抓取网站的host
  23. }
  24. req_header_2 = {
  25. 'User-Agent':'Mozilla/5.0 (Windows NT 6.1; rv:28.0) Gecko/20100101 Firefox/28.0'
  26. }
  27.  
  28. req_timeout = 5
  29. #status = urllib.urlopen(url).code
  30. #print status
  31. #if status != 200:
  32. # print 'Http Error %s' % status
  33. # return False
  34.  
  35. req = urllib2.Request(url,None,req_header_2)
  36. resp = urllib2.urlopen(req,None,req_timeout)
  37. html = resp.read()
  38. return html
  39.  
  40. def getAllUrl(html):
  41. reg = r'<a href="(.+)" target='
  42. theurl = re.compile(reg)
  43. url = re.findall(theurl,html)
  44. return url
  45.  
  46. def getNext(html):
  47. reg = r"<a href='.+pai/(.+).html'"
  48. nxtre = re.compile(reg)
  49. nxt = re.findall(nxtre,html)
  50. return nxt[0]
  51.  
  52. def getName(html):
  53. reg = r'<title>(.+)</title>'
  54. nare = re.compile(reg)
  55. name = re.findall(nare,html)
  56. return name[0]
  57.  
  58. def getImg(name,html):
  59. global CNT
  60.  
  61. reg = r'<img src="(.{0,80}\.jpg)" border="0"'
  62. imgre = re.compile(reg)
  63. imglist = re.findall(imgre,html)
  64.  
  65. reg = r'src="(.{0,80}\.jpeg)" border'
  66. imgre = re.compile(reg)
  67. imglist.extend(re.findall(imgre,html))
  68.  
  69. reg = r"<img src='(.{0,80}\.jpg)'"
  70. imgre = re.compile(reg)
  71. imglist.extend(re.findall(imgre,html))
  72.  
  73. reg = r"<img src='(.{0,80}\.jepg)'"
  74. imgre = re.compile(reg)
  75. imglist.extend(re.findall(imgre,html))
  76.  
  77. local = '.\%s-[%sp]' % (name,len(imglist))
  78. if os.path.exists(unicode(local,'utf-8')):
  79. return unicode(local,'utf-8')+u'was existed'
  80.  
  81. os.mkdir(unicode(local,'utf-8'))
  82.  
  83. x = 0
  84. for imgurl in imglist:
  85. print imgurl
  86. urllib.urlretrieve(imgurl,unicode(local+'\%s.jpg' % x,'utf-8'))
  87. x+=1
  88. CNT+=1
  89.  
  90. return unicode('%s: get %s pthoto(s)' % (name,x),'utf-8')
  91.  
  92. def getAll(num):
  93. global CNT
  94. nxt = 164680
  95. while num > 0:
  96.  
  97. url = '---%s.html' % nxt
  98. print nxt
  99. html = getHtml(url)
  100. nxt -= 1
  101. num -= 1
  102. if html == False:
  103. print 'Error'
  104. continue
  105.  
  106. print getImg(getName(html),html)
  107.  
  108. return 'done! %s photos!' % str(CNT)
  109.  
  110. def getAll_update(index):
  111. global CNT
  112. num = CNT
  113. urls = getAllUrl(getHtml(index))
  114.  
  115. for url in urls:
  116. html = getHtml('---'+url)
  117. print getImg(getName(html),html)
  118. return 'done! %s photos!' % str(CNT-num)
  119.  
  120. #print getAll(10)
  121. #html = getHtml('---')
  122. #print getNext(html)
  123.  
  124. x = 3
  125. while x < 50:
  126. print getAll_update('---' % x)
  127. x+=1
  128.  
  129. #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. 了解可执行的NPM包

    NPM是Node.js的包管理工具,随着Node.js的出现,以及前端开发开始使用gulp.webpack.rollup以及其他各种优秀的编译打包工具(大多数采用Node.js来实现),大家都开始接触 ...

  2. 二十一、当锚点遇到fixed(margin和padding)

    当锚点点击跳转的时候,如果上方有fixed,锚点跳转会默认跳转到top为0的地方,有一部分就被遮挡了 解决方法:(像素值随便给的) 给锚点跳转到的具体内容加padding-top:-50px:marg ...

  3. JS 执行上下文

    先看个小例子 function fn(){ console.log(a);//undefined; var a = 1; } fn(); 为什么打印出来的是 undefined 呢? 执行上下文概念 ...

  4. Integer的NPE问题

  5. 将iso镜像转换为docker镜像

    为什么不用官方的镜像? 不是不想使用,而是官方镜像提供的功能实在是太少了,不信的话,你pull一个ubuntu:latest的进行,你看有没有wget.curl.ssh这些功能,就连最简单的ifcon ...

  6. Linux kernel support docker storage driver aufs

    How to make docker use aufs in CentOS 7? - Server Faulthttps://serverfault.com/questions/650208/how- ...

  7. Linux之常用软件-服务

    在使用Linux系统的时候,经常要使用一些功能,但是并不是系统自带的一些功能,这个时候就需要我们进行扩展安装一些软件. 1)telnet  检测telnet-server的rpm包是否安装 [root ...

  8. myeclipse部署报错报空指针异常

    hib4.1+spring3+struts2项目 项目运行报错,把WEB-INF/classes目录删除后,想再重新编译并自动部署.再自动部署时总是提示错误: Errors occurred duri ...

  9. CMake--静态库与动态库构建

    小结内容 建立一个静态库和动态库,提供 HelloFunc 函数供其他程序编程使用, HelloFunc 向终端输出Hello World 字符串. 安装头文件与共享库. 1.代码与CMakeList ...

  10. MVC最全jar包

    <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> & ...