scrapy递归下载网站
# encoding: utf-8
import os
import re
import subprocess
import sys
import chardet
import scrapy
from scrapy.http import Request
from scrapy.selector import HtmlXPathSelector
from scrapy.spider import BaseSpider
from scrapy.utils.url import urljoin_rfc
from mychardet import *
# print sys.getdefaultencoding()
# print sys.path
def get_default_to_codec():
return mytogb18030
def getfirst(a):
# print 'enter getfirst', repr(a)
if a == None:
return u''
elif len(a) == 0:
return u''
b = a[0]
# print repr(b)#, chardet.detect(b)
return b
class Greasemonkey1Spider(scrapy.Spider):
name = "test"
allowed_domains = ["localhost"]
start_urls = (
'http://localhost/test',
)
def parseContext(self, response):
# print "Enter parseContext: ", response.url
hxs = response
sel = hxs.xpath('//title/text()')
if sel != None:
titles = sel.extract()
if len(titles) > 0: title = titles[0]
else: title = ''
sel = hxs.xpath('/html/body')
if sel != None:
bodys = sel.extract()
if len(bodys) > 0: body = bodys[0]
else: body = ''
# print title, repr(body)
def parse(self, response):
baseurl = response.url
print 'baseurl = ', baseurl
self.parseContext(response)
hxs = response.xpath(r'//a')
for path in hxs:
titles = getfirst(path.xpath(r'text()').extract())
urls = getfirst(path.xpath(r'@href').extract())
# print titles, urls
item_url = urljoin_rfc(baseurl, urls)
yield Request(item_url,callback=self.parse)
if __name__ == '__main__':
cmd = '''E:\Python27\Scripts\scrapy.exe crawl --nolog test'''
cwd = os.path.split(__file__)[0]
p = subprocess.Popen(cmd.split(), stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=False, cwd=cwd)
while None == p.poll():
out, err = p.communicate()
# print 'out, err', out, err, repr(out), repr(err)
if err:
print err
elif out:
print out
print p.returncode
# while not p.poll():
# print p.stdout.read()
# print p.stderr.read()
scrapy递归下载网站的更多相关文章
- wget递归下载网站资源
wget -r -p -np -k http://archive.openwrt.org/barrier_breaker/14.07/ramips/mt7620a/packages/ 在下载https ...
- wget 递归下载整个网站(网站扒皮必备)
有时间看到别人网站的页面比较漂亮,就想给扒皮下来,学习学习.分享一个我常用网站扒皮命令wget 这个命令可以以递归的方式下载整站,并可以将下载的页面中的链接转换为本地链接. wget加上参数之后,即可 ...
- wget 递归下载整个网站
wget -r -p -np -k http://xxx.com/xxx -r, --recursive(递归) specify recursive download.(指定递归下 ...
- centos5.5get 递归下载整个网站
这个命令可以以递归的方式下载整站,并可以将下载的页面中的链接转换为本地链接. wget加上参数之后,即可成为相当强大的下载工具. wget -r -p -np -k http://xxx.com/xx ...
- 一、scrapy的下载安装---Windows(安装软件太让我伤心了)
写博客就和笔记一样真的很有用,你可以随时的翻阅.爬虫的爬虫原理与数据抓取.非结构化与结构化数据提取.动态HTML处理和简单的图像识别已经学完,就差整理博客了 开始学习scrapy了,所以重新建了个分类 ...
- [No00006B]方便的网络下载工具wget 可下载网站目录下的所有文件(可下载整个网站)
wget是linux下命令行的下载工具,功能很强大,它能完成某些下载软件所不能做的,比如如果你想下载一个网页目录下的所有文件,如何做呢?网络用户有时候会遇到需要下载一批文件的情况,有时甚至需要把整个网 ...
- 批量下载网站图片的Python实用小工具(下)
引子 在 批量下载网站图片的Python实用小工具 一文中,讲解了开发一个Python小工具来实现网站图片的并发批量拉取.不过那个工具仅限于特定网站的特定规则,本文将基于其代码实现,开发一个更加通用的 ...
- Scrapy——5 下载中间件常用函数、scrapy怎么对接selenium、常用的Setting内置设置有哪些
Scrapy——5 下载中间件常用的函数 Scrapy怎样对接selenium 常用的setting内置设置 对接selenium实战 (Downloader Middleware)下载中间件常用函数 ...
- wget 批量下载网站目录下的文件
执行如下命令就会自动下载 http://www.iyunwei.com/docs/ 下面的所有文件: wget -nd -r -l1 --no-parent http://www.iyunwei.co ...
随机推荐
- C语言结构体篇 结构体
在描述一个物体的属性的时候,单一的变量类型是无法完全描述完全的.所以有了灵活的结构体变量. 结构体变量从意义上来讲是不同数据类型的组合,从内存上来讲是在一个空间内进行不同的大小划分. 1.1 结构体类 ...
- 操作视频-对视频进行canny边缘检测
#include<opencv2/opencv.hpp> using namespace cv; int main() { VideoCapture capture(); //从摄像头读入 ...
- 笔记-python-调试
笔记-python-调试 一般在pycharm下调试或使用log查看输出日志,有时小程序不想这么麻烦,也有一些方便使用的调试方式可以使用. 1. idle调试 1.打开Python shel ...
- python Re库的介绍
re库的贪婪匹配和最小匹配 后面跟着?变为最小匹配
- CSS3 3D圆形设计教程
http://www.htmleaf.com/ziliaoku/qianduanjiaocheng/201502061338.html
- DataGridView重查后,返回原来所在行
首先记录选中行 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 //查询前记录选中行 int _currentRow = 0; //int _cu ...
- 基于Xtrabackup备份集来恢复某个误删除的表(drop)
Preface Yesterday,I've demonstratated how to rescue a droped and a truncated table based on ...
- Python 高级 I/O 多路复用
Table of Contents 前言 select selectors 结语 参考链接 前言 第一次接触和 I/O 多路复用相关的概念是在书 CSAPP1 的并发编程章节,当时在了解了这个概念后只 ...
- Python调用Webservice
使用Python调用webservice 推荐使用 suds包 该包一般在Python2.x python3各种麻烦 略过 实例 import suds # webservice url url ...
- Python基础简介与简单使用
Python介绍 Python发展史 1989年,为了打发圣诞节假期,Guido开始写Python语言的编译器.Python这个名字,来自Guido所挚爱的电视剧Monty Python’s Flyi ...