此脚本用于爬站点的下载链接,最终输出到txt文档中。

如果是没有防盗链设置的站点,也可以使用脚本中的下载函数尝试直接下载。

本脚本是为了短期特定目标设计的,如果使用它爬其它特征的资源链接需自行修改配置语句。

python初学者,请多多指正。

  1. # -*- coding: utf-8 -*-
  2. import re
  3. import urllib
  4. import os
  5. import urllib2
  6. import requests
  7. import time
  8.  
  9. #download the file
  10. def download(page, url):
  11. local_filename =url.split('/')[-1] + page + '.jpg'
  12. r = requests.get(url, stream=True)
  13. with open(local_filename, 'wb') as f:
  14. for chunk in r.iter_content(chunk_size = 1024):
  15. if chunk: # filter out keep-alive new chunks
  16. f.write(chunk)
  17. f.flush()
  18.  
  19. return local_filename
  20.  
  21. #turn the data array into urls array
  22. def print_urls(urls):
  23. output_urls = []
  24. for link in urls:
  25. start_link = link.find('"')
  26. end_link = link.find('"', start_link+1)
  27. output_link = link[start_link+1: end_link]
  28. if output_link.find('http') == -1:
  29. output_link = 'http://www.XXX.com' + output_link
  30. if link.count('"') > 2:
  31. continue
  32. else:
  33. output_urls.append(output_link)
  34. return output_urls
  35.  
  36. def output_download_link_page(page):
  37. url = page
  38. s = urllib.urlopen(url).read()
  39. urls = []
  40. img_urls = 'no image on' + page
  41. new_stl_urls = []
  42.  
  43. title = re.findall(r'<h1>.+<\/h1>', s, re.I)
  44. if len(title) != 0:
  45. title = title[0]
  46. else:
  47. title = 'no title'
  48.  
  49. img_urls = print_urls(re.findall(r'href=".*?\.jpg.*?"', s, re.I))
  50. if len(img_urls) != 0:
  51. img_urls = img_urls[0]
  52. else:
  53. img_urls = 'no image' + page
  54.  
  55. stl_urls = print_urls (set(re.findall(r'href="/download/.*?"', s, re.I)))
  56.  
  57. for url in stl_urls:
  58. #url = urllib2.urlopen(url).url
  59. url = requests.get(url).url
  60. new_stl_urls.append(url)
  61.  
  62. urls.append(title)
  63. urls.append(img_urls)
  64. urls = urls + new_stl_urls
  65.  
  66. return urls
  67.  
  68. #print output_download_link_page('http://www.XXX.com/thing/46876')
  69.  
  70. #output all links to download
  71. def output_all_pages(site):
  72. s = urllib.urlopen(site).read()
  73. page = re.findall(r'href="/thing/.*?"', s, re.I)
  74. page = set(page)
  75. return print_urls(page)
  76.  
  77. #output all the sites to download
  78. def generate_sites(start, end):
  79. sites = []
  80. for num in range(start, end):
  81. sites.append('http://www.XXX.com/popular?query=&pg=' + str(num))
  82. return sites
  83.  
  84. #write all the results to a txt file
  85. file_new = open ('1.txt', 'r+')
  86. url_pakage = []
  87. sites = generate_sites(40, 46)
  88. count = 0
  89.  
  90. for site in sites:
  91. print site
  92. file_new.write( '\n' + site)
  93. pages = output_all_pages(site)
  94. for page in pages:
  95. urls = output_download_link_page(page)
  96. #
  97. if len(urls) >= 10:
  98. continue
  99. count = count + 1
  100. for url in urls:
  101. file_new.write(url + '\n')
  102. print 'done'
  103. time.sleep(10)
  104.  
  105. file_new.close()
  106. print 'all done. all..' + str(count) + '..models'

  

  

python 简易小爬虫的更多相关文章

  1. 亲身试用python简单小爬虫

    前几天基友分享了一个贴吧网页,有很多漂亮的图片,想到前段时间学习的python简单爬虫,刚好可以实践一下. 以下是网上很容易搜到的一种方法: #coding=utf-8 import urllib i ...

  2. python的小爬虫的基本写法

    1.最基本的抓站 import urllib2 content = urllib2.urlopen('http://XXXX').read() 2.使用代理服务器 这在某些情况下比较有用,比如IP被封 ...

  3. python简单小爬虫爬取易车网图片

    上代码: import requests,urllib.request from bs4 import BeautifulSoup url = 'http://photo.bitauto.com/' ...

  4. python图片小爬虫

    import re import urllib import os def rename(name): name = name + '.jpg' return name def getHtml(url ...

  5. Python练习,网络小爬虫(初级)

    最近还在看Python版的rcnn代码,附带练习Python编程写一个小的网络爬虫程序. 抓取网页的过程其实和读者平时使用IE浏览器浏览网页的道理是一样的.比如说你在浏览器的地址栏中输入    www ...

  6. python简易爬虫来实现自动图片下载

    菜鸟新人刚刚入住博客园,先发个之前写的简易爬虫的实现吧,水平有限请轻喷. 估计利用python实现爬虫的程序网上已经有太多了,不过新人用来练手学习python确实是个不错的选择.本人借鉴网上的部分实现 ...

  7. python 10 min系列三之小爬虫(一)

    python10min系列之小爬虫 前一篇可视化大家表示有点难,写点简单的把,比如命令行里看论坛的十大,大家也可以扩展为抓博客园的首页文章 本文原创,同步发布在我的github上 据说去github右 ...

  8. Python 基于学习 网络小爬虫

    <span style="font-size:18px;"># # 百度贴吧图片网络小爬虫 # import re import urllib def getHtml( ...

  9. Python爬虫01——第一个小爬虫

    Python小爬虫——贴吧图片的爬取 在对Python有了一定的基础学习后,进行贴吧图片抓取小程序的编写. 目标: 首先肯定要实现图片抓取这个基本功能 然后实现对用户所给的链接进行抓取 最后要有一定的 ...

随机推荐

  1. codevs 3060 抓住那头奶牛 x

    3060 抓住那头奶牛 USACO  时间限制: 1 s  空间限制: 16000 KB  题目等级 : 黄金 Gold   题目描述 Description 农夫约翰被告知一头逃跑奶牛的位置,想要立 ...

  2. 「概率,期望DP」总结

    期望=Σ概率*权值 1. Codeforces 148-D 考虑用$f[i][j]$表示princess进行操作时[还剩有i只w,j只b]这一状态的存在概率.这一概率要存在,之前draw out的一定 ...

  3. 冲刺周五——Fifth Day

    #一.Fifth Day照片 #二.今日份燃尽图 #三.项目进展 * 码云团队协同环境构建完毕 * 利用Leangoo制作任务分工及生成燃尽图 * 完成AES加解密部分代码 * 用代码实现对文件的新建 ...

  4. C/C++中动态内存分配

    代码段:用来存放程序执行代码的一块内存区域.这部分内存大小在程序运行前已经知道,通常属于只读,其中包括只读的字符串常量,不可改变 BBS段:用来存放存放程序中未初始化的全局变量及静态变量,属于静态内存 ...

  5. AtomicStampedReference 源码分析

    AtomicStampedReference AtomicStampedReference 能解决什么问题?什么时候使用 AtomicStampedReference? 1)AtomicStamped ...

  6. 职位-CEO:CEO

    ylbtech-职位-CEO:CEO 首席执行官(Chief Executive Officer,缩写CEO),职位名称,是在一个企业中负责日常事务的最高行政官员,主司企业行政事务,又称作司政.行政总 ...

  7. Linux_DNS服务器

    目录 目录 DNS DNS Server ServerSite Master DNS Server Forward Domain Reverse Resolution Slave DNS Server ...

  8. Openstack_通用模块_Oslo_vmware 创建/删除 vCenter 虚拟机

    目录 目录 oslovmware Connect to vCenter Server Create VirtualMachine for vCenter 常用的虚拟机配置项 删除虚拟机 oslo.vm ...

  9. docker远程访问TLS证书认证shell

    docker开启远程访问端口,防止非法访问 配置证书认证 配置防火墙或安全策略 #!/bin/bash # docker.tls.sh # 环境centos 7 ,root # 创建 Docker T ...

  10. Jmeter+ SeureCRT + Pinpoint

    1.环境配置 [相关操作] 下载jdk http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.h ...