2015-10-14 68 views
1

我对抓取有基本的了解。 这是一个基本的例子:Python中的网页抓取,与路径相混淆

page = requests.get('some_website.com') 
tree = html.fromstring(page.text) 
desc = tree.path('//div[@class = "my class"]/text()') 

我的递减将返回无论是在div。 但我怎么继续,如果我的JavaScript是比较复杂的

<tr> 
    <th class="my class">some text</th> 
    <td>some text</td> 
</tr> 

我需要的只是里面<td></td>是内部<tr></tr> 我将如何进行,如果<tr>将内部<div>

回答

1

部分您应该通过XPath教程来更好地理解。

我需要的只是里面<td></td>是内部<tr></tr> 我将如何着手的部分,如果<tr>将内部<div>

你的情况,那就是:

//div[@class = "my class"]//tr/td/text() 

如果您事先知道“某些文字”,则可以与following-sibling横向比较:

//div[@class = "my class"]//th[. = "some text"]/following-sibling::td/text() 
+0

如果''有一个类,我只会做// // div [@class =“div class”] // tr [@class =“tr class”]/td/text()',right ? – AK9309

+0

@ AK9309是的,看起来不错。请注意,虽然如果'tr'有多个类,它不会处理这种情况 - 在这种情况下,您可能会用'contains()'离开。 – alecxe

+0

明白了。谢谢! – AK9309