2016-07-14 11 views
2

url = "http://news.xinhuanet.com/english/2016-07/14/c_135513513.htm" Ich möchte alle regulären Absätze für die Nachrichten, nämlich alle Tag <p> ohne Zuordnung extrahieren. Ich benutze:Wie extrahiert man alle regulären Absatz mit Xpath für diese Art von HTML?

hxs = etree.HTML(cleaner.clean_html(page)) 
content = [p.xpath("normalize-space(.)") for p in hxs.xpath("//span[@id='content']/p[not(@*)]")] 

Aber der erste Inhalt in <p>-Tag mit einer Zuschreibung wird auch extrahiert. Könnten Sie mir einen richtigen und besseren XPath-Ausdruck geben, um meine Forderung zu erfüllen?

Antwort

1

Der HTML-Code, den Sie im Browser sehen, stimmt nicht mit der HTTP-Bibliothek überein, die Sie zum Herunterladen der Seite verwenden. Zum Beispiel, wenn ich tue:

import requests 

url = "http://news.xinhuanet.com/english/2016-07/14/c_135513513.htm" 
response = requests.get(url) 
print(response.content) 

Der erste Absatz in dem „Inhalt“ sei:

<p><img id="{E6CB4B95-0D91-45A9-BC63-AD69A87272FC}" title="" style="HEIGHT: 683px; WIDTH: 900px" hspace="0" alt="" src="135513513_14685061164641n.jpg" width="900" height="683" sourcename="本地文件" sourcedescription="网上抓取的文件" /> <br /><br /><font style="FONT-SIZE: 10pt" color="navy" size="1">ULAN BATOR, July 14, 2016 (Xinhua) -- Chinese Premier <a href="http://search.news.cn/language/search.jspa?id=en&amp;t=1&amp;t1=0&amp;ss=&amp;ct=&amp;n1=Li+Keqiang">Li Keqiang</a> (R) meets with Latvian President Raimonds Vejonis in Ulan Bator, Mongolia, July 14, 2016. (Xinhua/Wang Ye)</font> </p> 

Wie Sie sehen, hat es keine Attribute und daher wird immer von Ihrem XPath abgestimmt Ausdruck.

Sie brauchen einen anderen Ansatz, um diese Art von Absätzen zu überspringen. Sie können beispielsweise Absätze überspringen, die kein img Kindelement enthalten:

//span[@id='content']/p[not(@*) and not(img)] 
+0

Ihre Suche ist sehr wichtig. Vielen Dank. Ich finde aber auch verschiedene Zuschreibungen für den ersten nicht regulären Absatz. Wie kann ich den Inhalt extrahieren, der nur zwischen

und

erscheint? – lixiang