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()

时间: 2024-11-07 14:27:24

scrapy递归下载网站的相关文章

wget 递归下载整个网站(网站扒皮必备)

有时间看到别人网站的页面比较漂亮,就想给扒皮下来,学习学习.分享一个我常用网站扒皮命令wget这个命令可以以递归的方式下载整站,并可以将下载的页面中的链接转换为本地链接. wget加上参数之后,即可成为相当强大的下载工具. wget命令详解: wget -r -p -np -k http://xxx.com/xxx -r, --recursive(递归) specify recursive download.(指定递归下载)-k, --convert-links(转换链接) make links

centos5.5get 递归下载整个网站

这个命令可以以递归的方式下载整站,并可以将下载的页面中的链接转换为本地链接. wget加上参数之后,即可成为相当强大的下载工具. wget -r -p -np -k http://xxx.com/xxx -r,  --recursive(递归)          specify recursive download.(指定递归下载) -k,  --convert-links(转换链接)      make links in downloaded HTML point to local files

wget 递归下载整个网站

wget -r -p -np -k http://xxx.com/xxx -r,  --recursive(递归)          specify recursive download.(指定递归下载)-k,  --convert-links(转换链接)      make links in downloaded HTML point to local files.(将下载的HTML页面中的链接转换为相对链接即本地链接)-p,  --page-requisites(页面必需元素)    get

电影字幕下载网站大全(By乐葛格)

电影字幕下载网站大全(srt.sub等格式) By 乐葛格 中文字幕下载站(chinese language) 射手网:www.shooter.com.cn(极力推荐,最全面) TLF原创字幕站 :http://tlfsubs.eastgame.net/ 汉风中文字幕库:http://sub.hanstyle.org/default.asp 新视界字幕站 :http://www.newmov.com/dvd/film.asp 伊甸园电影字幕下载区:http://bbs.ydy.com/forum

几个资料下载网站

<1> PDF-Search-Engine <2> TooDoc <3> PDFQueen 在这上面基本上可以搜索到现有的开源项目的相关资料,比较最新的文档,不过蛋疼的是英文,耐心看! 几个资料下载网站,布布扣,bubuko.com

分享一个免费的在线Youtube视频在线下载网站(52Youtube.com),下载技术视频方便很多

分享一个 免费的在线Youtube视频在线下载网站,下载技术视频方便很多. 网址是 www.52youtube.com ,受限的Youtube视频也能下(年龄,地域限制等),比较不错. 

wget下载网站整个目录

wget -r -p -np -k -P ./data/ http://example.com/eg/ 具体参数: -P 表示下载到哪个目录 -r 表示递归下载 -np 表示不下载旁站连接 -k 表示将下载的网页里的链接修改为本地链接 -p 获得所有显示网页所需的元素

专业定制下载系统网站/下载网站源码,资源下载网站源码

10年的技术团队专业定制下载系统网站/下载网站源码,资源下载网站平台定制 该下载系统由绿茶科技团队自主开发,系统采用了国内比较主流的thinkPHP框架实现的,数据库用MySQL.是一套致力于软件应用,工具游戏,视频小说,教程资讯等通用资源下载的下载系统整站源码.模版设计整洁.清爽,广告位布局合理.会员积分体系完善,支持用户上传分享免费.收费资源. 下载收益支持用户提现. 分享有收益,刺激用户上传扩充网站资源,实现商家与平台联和共盈. PC版: 手机版: 服务器选择:  服务器购买地址:http

scrapy递归抓取网页数据

scrapy spider的parse方法可以返回两种值:BaseItem,或者Request.通过Request可以实现递归抓取. 如果要抓取的数据在当前页,可以直接解析返回item(代码中带**注释的行直接改为yield item): 如果要抓取的数据在当前页指向的页面,则返回Request并指定parse_item作为callback: 如果要抓取的数据当前页有一部分,指向的页面有一部分(比如博客或论坛,当前页有标题.摘要和url,详情页面有完整内容)这种情况需要用Request的meta