我是python和scrapy的新手,我必须抓一个完全用桌子建造的网站(差不多有80张桌子)。
网站的结构是这样的:
<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>
但是在其中一个表中有一个成员列表,我需要提取每个成员的配置文件信息,但每个配置文件都是可变的,因此根据隐私设置,表及其信息会发生变化。 / p>
我需要刮的表是这样的,但有许多成员:
<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>
然后我查看了代码,我注意到有两种类型的配置文件,而使用xpath的查询不会相互交叉。
然后问题是如何提取每个成员的个人资料信息,考虑到当我打开链接时,我可以找到两种不同类型的个人资料。我想我需要一个像这样的代码
def parse(self, response):
if this xpath query doesn't work
try this one
答案 0 :(得分: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