2011-01-28 7 views
1

こんにちは誰かが私に次のことをするシェルスクリプトの設定を手助けすることができますか? http://site.com/xap/wp7?p=1 wgetとsedを使ったLinuxシェルスクリプトのヘルプ

    1. のwget> HTMLのすべての商品名のタイトル= "送料無料商品名" の間でからの抽出表示...例:タイトル= "送料無料HD7-Case001">、HD7-Case001です抽出された。
    2. products.txtに出力
    3. 手順1のプロセスをループします。url http://site.com/xap/wp7?p=1ここで、「1」は番号50までのページ番号です。 http://..wp7?p=1http://..wp7?p=2http://..wp7?p=3

    は、私は間違いなくあなたがPHPを組み合わせることができます

    #! /bin/sh 
    ... 
    
    while read page; do 
    wget -q -O- "http://site.com/xap/wp7?p=$page" | 
    sed ... 
    
    done < "products.txt" 
    
  • +0

    http://xmlstar.sourceforge.net/ –

    +0

    particuがありますあなたがwget&sedと関連がある理由は何ですか? –

    +0

    [この方法の狂気の嘘](http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454)。イグナシオが与えたリンクに従ってください。 –

    答えて

    1
    #/bin/bash 
    
    for page in {1..50} 
    do 
        wget -q "http://site.com/xap/wp7?p=$page" -O - \ 
        | tr '"' '\n' | grep "^Free Shipping " | cut -d ' ' -f 3 > products.txt 
    done 
    

    が改行に各二重引用符を回しているTR、そのようなものになりますTRの出力が可能基本的には、各製品を独自の行に配置する方法です。

    次に、のgrepはそうその出力はようにする必要があり、送料無料で始まるものを除く他のすべての行を捨てるしようとしている:

    Free Shipping [Product1] 
    Free Shipping [Product2] 
    ... 
    

    次に、カット (スペースで区切られた)第三の「欄を」OUT抽出されるので、出力は次のようになります

    [Product1] 
    [Product2] 
    ... 
    
    +0

    何も出力されていません。 '\ n'は、各出力後に行を返すか、各Free Shippingがそれ自身の行にあると仮定しているかを示します。 – acctman

    +0

    上記の説明を追加しました。コマンドの各部分を1つずつ実行して、上記の手順に従っているかどうかを確認してください。入力されたhtmlにはそれぞれFree Shippingがあり、 "Free Shipping [Product]"という文字列が実際に二重引用符で囲まれているという前提はありません。 –

    1

    より多くの作業が必要...自分でいくつかの研究を行って、これくらいのコードは自分自身を書かれていましたXML解析

    のwget bashスクリプト

    #/bin/bash 
    
    for page in {1..50} 
    do 
        wget -q -O /tmp/$page.xml "http://site.com/xap/wp7?p=$page" 
        php -q xml.php $page >> products.txt 
    done 
    

    xml.php

    <? 
    $file = '/tmp/'.$argv[1].'.xml'; 
    // assumeing the following format 
    //<Products><Product title="Free Shipping ProductName"/></Products> 
    
    $xml = simplexml_load_file($file); 
    echo $xml->Product->attributes()->title; 
    /* you can make any replacement only parse/obtain the correct node attribute */ 
    ?> 
    

    ない素晴らしいアイデアが、PHP simplexml XMLを解析するためにいくつかの簡単な方法を提供します。

    <html> 
    ... 
    ... <tag title= 
    Free Shipping [Product] 
    > ... 
    


    希望これは、いくつかのキックスタートアイデア

    関連する問題