2015-10-14 73 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