2017-10-03 1 views
0

Ich werde ein Webcrawling der Artikel von dieser Website machen.Xpath zum Extrahieren von Artikeltext von der Webseite

Dies ist, was ich bisher getan haben:

# HR Version 
# the entire crawling process 

openfile = open("data/HR.csv", "rb") 
r = csv.reader(openfile) 
HR_data = [] 

for i in r: 
    url = i[0] 
    print url # to know the status of web crawling 
    r = requests.get(url) 
    data = html.fromstring(r.text) 
    #Inspect line with text 
    #//*[@id="article-details"] 
    #<section class="entry-content clearfix" itemprop="articleBody"></section> 
    texts = data.xpath("//*[@id="article-details"]/p/text()") 
    raw = ''.join(str(i.encode("utf-8")) for i in texts) 
    finaldata = raw.replace('\r','').replace('\n','').replace('\r','').replace('\t','')  
    HR_data.append([finaldata]) 

openfile.close() 

Der Befehl in Frage wird die folgende

texts = data.xpath("//*[@id="article-details"]/p/text()") 

Und es ist aus diesem speziellen Webseite: http://hrmagazine.co.uk/article-details/internal-entrepreneurship-can-boost-your-business

Inspect Element verwenden auf Firefox, ich fand den "Text" innerhalb dieses folgenden Segments, das im folgenden Abschnitt enthalten ist:

<article id="article-details"> 
#One <h2> element, followed by multiple <p> elements. 
</article> 

Was ist der richtige XPath, um nur den Absatztext aus dem Artikel zu extrahieren?

Antwort

0

Sie haben fast den richtigen XPath geschrieben. Sie müssen auf h2

texts = data.xpath("//*[@id="article-details"]/h2/text()") 
ersetzen
Verwandte Themen