0
私はいくつかの面倒なhtmlでサイトを解析しています。それらは130個のサブサイトであり、失敗したのは最後のものだけです。失敗した部分は太字です。私は3つ(親と2つの子)を取得する必要があるときに私は空のリストを取得します。すべてのサイトは同じ構造をしているので、これを解決する手掛かりはありません。xpathを使ってテーブルの子を解析できません
from lxml.html import parse
# get a list of the urls of the foods to parse
main_site = "http://www.whfoods.com/foodstoc.php"
doc = parse(main_site).getroot()
doc.make_links_absolute()
sites = doc.xpath('/html/body//div[@class="full3col"]/ul/li/a/@href')
for site in sites:
doc = parse(site).getroot()
**table = doc.xpath("descendant::table[1]")[0]**
#food info list
table.xpath("//tr/td/table/tr/td/b/text()")
# food nutrients list
table.xpath("//tr/td/table[1]/tr/td/text()")
これは、(あなたはそれが完了見たい場合はclick hereを)失敗したサイトのHTMLの抜粋です:
<html>
<head>
<body>
<div id=mainpage">
<div id="subcontent">
(40+ <p> tags with things inside)
<p>
<table>
<tbody>
<tr>
<td>
<table>
<tbody>
<tr>
<td>
<b>Food's name<br>other things</b>
</td>
</tr>
<tr>
Heads of the table(not needed)
</tr>
<tr>
<td>nutrient name</td>
<td>dv</td>
<td>density</td>
<td>rating</td>
</tr>
</tbody>
</table>
<table> Not needed
...
All remaining closing tags
名前空間宣言を確認しましたか? –
@Alejandro:申し訳ありませんが、あなたは何を意味するのか分かりません。 – mfalcon
これはXPathの質問ではありません。 XPath式は、整形式のXML文書(または最悪の場合はフラグメント)にのみ適用できます。テキストにリンクされたものは整形式のXMLではありません。 –