0

だから私はSCRAPYを使ってウェブサイトの本をこすり落としています。

私はクローラーを動作させており、クロールは正常に行われますが、XPATH で選択を使用して HTML をクリーニングする場合、うまくいきません。今は本のウェブサイトなので、各ページにほぼ131冊の本があり、それらのXPATHは次のようになります

たとえば、本のタイトルを取得する -

1st Book --- > /html/body/div/div[3]/div/div/div[2]/div/ul/li/a/span
2nd Book --->  /html/body/div/div[3]/div/div/div[2]/div/ul/li[2]/a/span 
3rd book --->  /html/body/div/div[3]/div/div/div[2]/div/ul/li[3]/a/span 

DIV[] の数は、本によって増加します。これをループに入れ、すべてのタイトルをキャッチする方法がわかりません。画像と著者名についてもこれを行う必要がありますが、同様になると思います。この最初のものを完成させる必要があります。

事前にご協力いただきありがとうございます。

4

2 に答える 2

2

これを取得するにはさまざまな方法があります

  1. 複数のノードを選択するのに最適なのは、ID またはクラスに基づいて選択することです。例えば:

    sel.xpath("//div[@id='id']")
    
  2. こんな感じで選べます

    for i in range(0, upto_num_of_divs):
        list = sel.xpath("//div[%s]" %i)
    
  3. こんな感じで選べます

    for i in range(0, upto_num_of_divs):
        list = sel.xpath("//div[position > =1 and position() < upto_num_of_divs])
    
于 2014-05-14T11:06:44.387 に答える
0

サンプルの html を解析する方法の例を次に示します。

lis = hxs.select('//div/div[3]/div/div/div[2]/div/ul/li')
for li in lis:
    book_el = li.select('a/span/text()')

//div[@class="final-price"]//span多くの場合、1 つの xpath ですべてのスパンのリストを取得するようなことができます。正確な式は、HTML によって異なります。これは、アイデアを提供するためのものです。

それ以外の場合は、上記のコードでうまくいくはずです。

于 2012-09-20T08:18:31.973 に答える