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

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

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

python初学者,请多多指正。

# -*- coding: utf-8 -*-
import re
import urllib
import os
import urllib2
import requests
import time #download the file
def download(page, url):
local_filename =url.split('/')[-1] + page + '.jpg'
r = requests.get(url, stream=True)
with open(local_filename, 'wb') as f:
for chunk in r.iter_content(chunk_size = 1024):
if chunk: # filter out keep-alive new chunks
f.write(chunk)
f.flush() return local_filename #turn the data array into urls array
def print_urls(urls):
output_urls = []
for link in urls:
start_link = link.find('"')
end_link = link.find('"', start_link+1)
output_link = link[start_link+1: end_link]
if output_link.find('http') == -1:
output_link = 'http://www.XXX.com' + output_link
if link.count('"') > 2:
continue
else:
output_urls.append(output_link)
return output_urls def output_download_link_page(page):
url = page
s = urllib.urlopen(url).read()
urls = []
img_urls = 'no image on' + page
new_stl_urls = [] title = re.findall(r'<h1>.+<\/h1>', s, re.I)
if len(title) != 0:
title = title[0]
else:
title = 'no title' img_urls = print_urls(re.findall(r'href=".*?\.jpg.*?"', s, re.I))
if len(img_urls) != 0:
img_urls = img_urls[0]
else:
img_urls = 'no image' + page stl_urls = print_urls (set(re.findall(r'href="/download/.*?"', s, re.I))) for url in stl_urls:
#url = urllib2.urlopen(url).url
url = requests.get(url).url
new_stl_urls.append(url) urls.append(title)
urls.append(img_urls)
urls = urls + new_stl_urls return urls #print output_download_link_page('http://www.XXX.com/thing/46876') #output all links to download
def output_all_pages(site):
s = urllib.urlopen(site).read()
page = re.findall(r'href="/thing/.*?"', s, re.I)
page = set(page)
return print_urls(page) #output all the sites to download
def generate_sites(start, end):
sites = []
for num in range(start, end):
sites.append('http://www.XXX.com/popular?query=&pg=' + str(num))
return sites #write all the results to a txt file
file_new = open ('1.txt', 'r+')
url_pakage = []
sites = generate_sites(40, 46)
count = 0 for site in sites:
print site
file_new.write( '\n' + site)
pages = output_all_pages(site)
for page in pages:
urls = output_download_link_page(page)
#
if len(urls) >= 10:
continue
count = count + 1
for url in urls:
file_new.write(url + '\n')
print 'done'
time.sleep(10) file_new.close()
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. Wannafly挑战赛16 #E 弹球弹弹弹 splay+基环树+各种思维

    链接:https://ac.nowcoder.com/acm/problem/16033来源:牛客网 有n个位置,标号为1到n的整数,m次操作,第i次操作放置一个弹球在b[i] xor c[i-1]处 ...

  2. 搭建 .Net RabbitMQ 开发环境

    开发环境,window 10 64位,VS2017,系统账号需要用administrator. 1 先需要安装erlang语言开发包,一路默认安装就是了,地址:http://www.erlang.or ...

  3. Web 与 Node 基础

    浏览器端发送请求(browser) 浏览器或者模拟发送 http 请求端 服务端处理请求(web) 服务器(使用 node ) 2.1. 使用 Forever 管理程序 2.2. 可以使用 PM2 代 ...

  4. 3D Computer Grapihcs Using OpenGL - 06 Vertex and Fragment Shaders

    从这里就接触到了可编程图形渲染管线. 下面介绍使用Vertex Shader (顶点着色器)和 Fragment Shader(像素着色器)的方法. 我们的目标是使用这两个着色器给三角形填充绿色. 添 ...

  5. 解决VS中不能搜索被折叠的代码块

    问题不大,但容易被忽略,解决方法:

  6. MySQL主主模式

    mysql主主复制配置: HOSTNAME IPADDR PORT节点1:my-prod01.oracle.com 192.168.10.97 3306 节点2:my-prod02.oracle.co ...

  7. 数位dp好题整理+自己wa过的细节记录

    花(fa)神的数论题 三倍经验:烦人的数学作业 windy数 手机号码 同类分布(博客先鸽着) 板子固然好,细节无限多. 花式wa题法,警示后来人. 1.手残害人不浅 (蒟蒻的我掉坑里不止一次) 2. ...

  8. 模拟赛DAY 2 T1江城唱晚

    [题目背景] 墙角那株海棠,是你种下的思念. 生死不能忘,高烛照容颜. 一曲江城唱晚,重忆当年坐灯前, 青衫中绣着你留下的线. ——银临<江城唱晚> [问题描述] 扶苏是个喜欢一边听古风歌 ...

  9. JS 弹出网页 (不显示地址栏,工具栏) 网页去掉地址栏

    JS 弹出网页 (不显示地址栏,工具栏) 网页去掉地址栏 window.open()支持环境: JavaScript1.0+/JScript1.0+/Nav2+/IE3+/Opera3+ 基本语法: ...

  10. JPA 学习笔记

    eclipse 新建jpa项目 : 修改 persistence.xml 文件 创建 Customer 类:    column 名称和数据库名称对应则不用写 类写好后在 persistence.xm ...