python 简易小爬虫
此脚本用于爬站点的下载链接,最终输出到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 简易小爬虫的更多相关文章
- 亲身试用python简单小爬虫
前几天基友分享了一个贴吧网页,有很多漂亮的图片,想到前段时间学习的python简单爬虫,刚好可以实践一下. 以下是网上很容易搜到的一种方法: #coding=utf-8 import urllib i ...
- python的小爬虫的基本写法
1.最基本的抓站 import urllib2 content = urllib2.urlopen('http://XXXX').read() 2.使用代理服务器 这在某些情况下比较有用,比如IP被封 ...
- python简单小爬虫爬取易车网图片
上代码: import requests,urllib.request from bs4 import BeautifulSoup url = 'http://photo.bitauto.com/' ...
- python图片小爬虫
import re import urllib import os def rename(name): name = name + '.jpg' return name def getHtml(url ...
- Python练习,网络小爬虫(初级)
最近还在看Python版的rcnn代码,附带练习Python编程写一个小的网络爬虫程序. 抓取网页的过程其实和读者平时使用IE浏览器浏览网页的道理是一样的.比如说你在浏览器的地址栏中输入 www ...
- python简易爬虫来实现自动图片下载
菜鸟新人刚刚入住博客园,先发个之前写的简易爬虫的实现吧,水平有限请轻喷. 估计利用python实现爬虫的程序网上已经有太多了,不过新人用来练手学习python确实是个不错的选择.本人借鉴网上的部分实现 ...
- python 10 min系列三之小爬虫(一)
python10min系列之小爬虫 前一篇可视化大家表示有点难,写点简单的把,比如命令行里看论坛的十大,大家也可以扩展为抓博客园的首页文章 本文原创,同步发布在我的github上 据说去github右 ...
- Python 基于学习 网络小爬虫
<span style="font-size:18px;"># # 百度贴吧图片网络小爬虫 # import re import urllib def getHtml( ...
- Python爬虫01——第一个小爬虫
Python小爬虫——贴吧图片的爬取 在对Python有了一定的基础学习后,进行贴吧图片抓取小程序的编写. 目标: 首先肯定要实现图片抓取这个基本功能 然后实现对用户所给的链接进行抓取 最后要有一定的 ...
随机推荐
- codevs 3060 抓住那头奶牛 x
3060 抓住那头奶牛 USACO 时间限制: 1 s 空间限制: 16000 KB 题目等级 : 黄金 Gold 题目描述 Description 农夫约翰被告知一头逃跑奶牛的位置,想要立 ...
- 「概率,期望DP」总结
期望=Σ概率*权值 1. Codeforces 148-D 考虑用$f[i][j]$表示princess进行操作时[还剩有i只w,j只b]这一状态的存在概率.这一概率要存在,之前draw out的一定 ...
- 冲刺周五——Fifth Day
#一.Fifth Day照片 #二.今日份燃尽图 #三.项目进展 * 码云团队协同环境构建完毕 * 利用Leangoo制作任务分工及生成燃尽图 * 完成AES加解密部分代码 * 用代码实现对文件的新建 ...
- C/C++中动态内存分配
代码段:用来存放程序执行代码的一块内存区域.这部分内存大小在程序运行前已经知道,通常属于只读,其中包括只读的字符串常量,不可改变 BBS段:用来存放存放程序中未初始化的全局变量及静态变量,属于静态内存 ...
- AtomicStampedReference 源码分析
AtomicStampedReference AtomicStampedReference 能解决什么问题?什么时候使用 AtomicStampedReference? 1)AtomicStamped ...
- 职位-CEO:CEO
ylbtech-职位-CEO:CEO 首席执行官(Chief Executive Officer,缩写CEO),职位名称,是在一个企业中负责日常事务的最高行政官员,主司企业行政事务,又称作司政.行政总 ...
- Linux_DNS服务器
目录 目录 DNS DNS Server ServerSite Master DNS Server Forward Domain Reverse Resolution Slave DNS Server ...
- Openstack_通用模块_Oslo_vmware 创建/删除 vCenter 虚拟机
目录 目录 oslovmware Connect to vCenter Server Create VirtualMachine for vCenter 常用的虚拟机配置项 删除虚拟机 oslo.vm ...
- docker远程访问TLS证书认证shell
docker开启远程访问端口,防止非法访问 配置证书认证 配置防火墙或安全策略 #!/bin/bash # docker.tls.sh # 环境centos 7 ,root # 创建 Docker T ...
- Jmeter+ SeureCRT + Pinpoint
1.环境配置 [相关操作] 下载jdk http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.h ...