2017-07-18 18 views
0

私はpythonとscrapyの初心者です。テーブル全体(ほぼ80テーブル)で構築されたWebサイトを傷つけなければなりません。Scrapy:条件付きのテーブル内のリンクを削る方法

ウェブサイトの構造は、このようなものです:

<table> 
<tr> 
<td class="header" colspan="2">something</td> 
</tr> 

</table> 
<br/> 
<table> 
<tr> 
<td class="header" colspan="2">something2</td> 
</tr> 

</table> 
<br/> 
<table> 
<tr> 
<td class="header" colspan="2">something3</td> 
</tr> 
</table> 

しかし、これらのテーブルの1の1の内側にあっメンバーのリストがあると私は各メンバーのプロフィール情報を抽出する必要がありますが、各プロファイルプライバシーの設定に応じて、その情報を含むテーブルが変更されます。

私はこすりする必要がある表は、このようなものですが、多くのメンバーと:

<table> 
      <tr> 
       <td colspan="4" class="header">members</td> 
      </tr> 
      <tr> 
       <td class="title">Name</td> 
       <td class="title">position</td> 
       <td class="title">hours</td> 
       <td class="title">observ</td> 
      </tr> 

      <tr> 
       <td class="c1">  
        1.- <a href="http://profiletype1" target="_blank">Homer Simpson</a> 
       </td> 
       <td class="c1"> 
        safety inspector 
       </td> 
       <td class="c1"> 
        10 
       </td> 
       <td class="c1"> 
        Neglect his duties 
       </td> 
      </tr> 
<table> 

その後、私はコードを見て、私はプロファイルの2種類があることに気づいた、とXPathでクエリを実行します互いに交差しない。

次に、私はリンクを開くと2つの異なるタイプのプロファイルを見つけることができることを考慮して、各メンバーのプロファイル情報をどのように抽出できますか?私はあなたがちょっとまだあなたの質問に答えだと思う。この

def parse(self, response): 
if this xpath query doesn't work 
try this one 

答えて

0

のように何かをするコードが必要と思いますし、私は適切な答えを与えることができるようにするためのソリューションは非常にドメイン固有のものです。とにかく私はあなたに私がどのように問題に近づくかという考えを伝えようとします。

def parse(self, respose): 
    test = response.xpath("//some expression that only works in method one").extract_first() 
    if test is not None: 
     return self.parse_with_method_one(response) 
    return self.parse_with_method_two(response) 

def parse_with_method_one(self, response): 
    # your logic 

def parse_with_method_two(self, response): 
    # your logic 
+0

答えていただきありがとうございますが、もう別の問題に直面しています。 –

関連する問題