私はPythonとScrapyのまったくの初心者であり、完全にテーブル(ほぼ80テーブル)で構築されたWebサイトをスクレイピングする必要があります。
ウェブサイトの構造は次のようなものです。
<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つにメンバーのリストがあり、各メンバーのプロファイル情報を抽出する必要がありますが、各プロファイルは可変であるため、プライバシー設定に応じて、情報を含むテーブルが変更されます。
私がこする必要があるテーブルはこのようなものですが、多くのメンバーがいます:
<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
あなたはすでにあなたの質問に答えていると思います、そして解決策は私が適切な答えを与えることができるように非常にドメイン固有です。とにかく、私が問題にどのようにアプローチするかについてのアイデアを提供しようとします。
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
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加