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有了一定的基础学习后,进行贴吧图片抓取小程序的编写. 目标: 首先肯定要实现图片抓取这个基本功能 然后实现对用户所给的链接进行抓取 最后要有一定的 ...
随机推荐
- mybatis config 快速生成xml DAO
0.加jar包 1.a.BAT java -jar E:\GZH\Mybaits\mybatis-generator-core-1.3.2\lib\mybatis-generator-core-1.3 ...
- Bugku 杂项 猜
猜 说flag是一个人名字的全拼,直接搜图片
- 【PowerOJ1751&网络流24题】数字梯形问题(费用流)
题意: 思路: [问题分析] 求图的最大权不相交路径及其变种,用费用最大流解决. [建模方法] 规则(1) 把梯形中每个位置抽象为两个点<i.a>,<i.b>,建立附加源S汇T ...
- bzoj 4298 [ONTAK2015]Bajtocja——哈希+启发式合并
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4298 题面: 给定d张无向图,每张图都有n个点.一开始,在任何一张图中都没有任何边.接下来有 ...
- Guava 已经学习的代码整理
Guava 已经学习的代码整理 Guava 依赖: compile group: 'com.google.guava', name: 'guava', version: '18.0' 以下是我自己在开 ...
- Java中的BigDecimal类和int和Integer总结
前言 我们都知道浮点型变量在进行计算的时候会出现丢失精度的问题.如下一段代码: System.out.println(0.05 + 0.01); System.out.println(1.0 - 0. ...
- XML的基础之一(概念和语法)
XML的基础(概念和语法) xml html 概念 异同 XML全称为extensible markup language,即可扩展标记语言,简单理解为可预定义标签的编程语言.它与HTML(超文本标 ...
- Linux内核调试方法总结之dumpsys
dumpsys [用途]Android系统提供的dumpsys工具可以用来查看系统服务信息与状态. [使用说明] adb shell dumpsys <service> [<opti ...
- day47—JavaScript事件基础应用
转行学开发,代码100天——2018-05-02 1.事件对象 JavaScript中事件对象通常用定义变量ev或event表示.为了兼顾浏览器兼容问题,定义事件对象为 var oEvent = ev ...
- iView 实战系列教程(21课时)_2.iView 实战教程之导航、路由、鉴权篇
在c盘创建一个iview-router的项目 . 然后使用默认的配置 跳过 添加vue-router的插件 编译我们的文件. 编译好之后,我们启动App 默认的页面就打开了. 默认两个路由一个是abo ...