Ebay HTMLページからいくつかの情報を抽出するBashスクリプト

Ebay HTMLページからいくつかの情報を抽出するBashスクリプト

eBayで検索結果をフィルタリングしてテキストファイルにエクスポートしたいです。検索には多くの結果がありますが、同じ方法を使用してすべての結果をフィルタリングできると思ったので、この投稿の一番下に例を含めました。私はsedとgrepを使用してURLをフィルタリングする基本をある程度理解していますが、出力が特定の方法で表示されるようにしたいと思います。 URLの後にカンマと価格を入力したいです。たとえば、

http://www.ebay.co.uk/itm/Principles-Of-Modern-Chemistry-International-Edition-Gillis-H-Pat-Oxtoby-Ca-/161952820281?hash=item25b523ec39:g:MEYAAOSwoydWnvT2、£73.69

この時点で私が指摘したいのは、テキストファイルに無駄なURLがあるということです(例:http://thumbs.ebaystatic.com/images/g/MEYAAOSwoydWnvT2/s-l225.jpg)しかし、私が興味のあるタイプ(たとえば、最初の例で使用した形式)とは異なる形式です。私がこれをどのように達成できるかを知っている人はいますか?ありがとう

<h3 class="lvtitle"><a href="http://www.ebay.co.uk/itm/Principles-Of-Modern-Chemistry-International-Edition-Gillis-H-Pat-Oxtoby-Ca-/161952820281?hash=item25b523ec39:g:MEYAAOSwoydWnvT2"  class="vip" title="Click this link to access Principles Of Modern Chemistry, International Edition Gillis, H. Pat; Oxtoby; Ca">Principles Of Modern Chemistry, International Edition Gillis, H. Pat; Oxtoby; Ca</a>^M
                </h3>^M
        <ul class="lvprices left space-zero">^M
^M
        <li class="lvprice prc">^M
                        <span  class="bold bidsold">
                                        £73.69</span>
                                </li>^M
                <li class="lvformat">^M
                        <span >
                                <span class="logoBin" title="Buy it now"></span>
                                        </span>

ベストアンサー1

eBayからデータを取得する最良の方法は、eBayを利用することです。アプリケーションプログラミングインターフェース。つまり、時にはHTMLだけ持っている場合もあるので、これについては答えで扱います。

HTMLから情報を抽出するためにsedやgrepなどのツールを使用しないでください。完全に機能し、壊れやすい場合は、実行するのは非常に困難です。この道は狂気でいっぱいです。

HTMLを解析する必要がある場合は、PythonなどのHTMLを解析するツールを使用してください。美しいスープライブラリ、パールHTML::ツリービルダー、ルビーのこぎり、等。

#!/usr/bin/env python2
import codecs, sys, BeautifulSoup
html = BeautifulSoup.BeautifulSoup(codecs.open(sys.argv[1], "r", "utf-8").read())
for lv in html.findAll("h3", "lvtitle"):
    url = lv.find("a")["href"]
    bid = lv.findNextSibling("ul").find("span", "bidsold").text.strip()
    print(url, bid)

おすすめ記事