Python kratzen reuters site … bad xpath?

Ich versuche etwas zu tun, was schien einfach zu sein … Ich versuche, Firmennamen der Reuters-Liste aus diesem Link zu kratzen:

Http://www.reuters.com/finance/markets/index?symbol=us!spx&sortBy=&sortDir=&pn=

Allerdings kann ich einfach nicht auf die Firmennamen zugreifen! Wirklich, nach dem Spielen herum mit vielen xpath Abfragen, habe ich Probleme beim Zugriff auf den Tisch. Ich versuche, die Namen wie "3M Unternehmen" und "Abbott Laboratories"

Hier sind Snippets von Code, den ich benutzt habe:

scrape = [] companies =[] import lxml import lxml.html import lxml.etree urlbase = 'http://reuters.com/finance/markets/index?symbol=us!spx&sortBy=&sortDir=&pn=' for i in range(1:18): url = urlbase+str(i) content = lxml.html.parse(url) item = content.xpath('XPATH HERE') ticker = [thing.text for thing in item] 

Hier sind die xpaths, mit denen ich gespielt habe:

 '//*[@id="topContent"]/div/div[2]/div[1]/table/tr[2]/td[1]/a' '//*[@id="topContent"]/div/div[2]/div[1]/table/tbody/tr[2]/td[1]/a '/html/body/div[3]/div[3]/div/div[2]/div/table/tbody/tr[3]/td/a' '/html/body/div[3]/div[3]/div/div[2]/div/table/tr[3]/td/a' 

Ich habe versucht, auf diese eine bestimmte Tabelle zuzugreifen: '//table[@class="dataTable sortable"]' , aber habe kein Glück gehabt

Kann jemand helfen? Ich fühle mich wie das ist etwas, dass jemand, der weiß, was sie tun, wird in der Lage sein, ziemlich schnell zu reparieren DANK!

One Solution collect form web for “Python kratzen reuters site … bad xpath?”

Die Seite, die du kratzst, hat eine Form in der Tabelle. Der richtige xpath sollte '//table[@class="dataTable sortable"]/form/tr/td[1]/a'

Außerdem hast du wahrscheinlich einen Tippfehler in deinem Code, es sollte range(1,18) statt range(1:18) . Hier ist der letzte Code, der auf meiner Seite funktioniert:

 scrape = [] companies =[] import lxml import lxml.html import lxml.etree urlbase = 'http://reuters.com/finance/markets/index?symbol=us!spx&sortBy=&sortDir=&pn=' for i in range(1,18): url = urlbase+str(i) content = lxml.html.parse(url) item = content.xpath('//table[@class="dataTable sortable"]/form/tr/td[1]/a') ticker = [thing.text for thing in item] print ticker 
  • Warum funktioniert xpath nicht bei der Verarbeitung eines XHTML-Dokuments mit lxml (in python)?
  • Warum schlägt dieser xpath mit lxml in python aus?
  • Python XPath SyntaxError: ungültiges Prädikat
  • Die Grenze von Element Tree auf xpath
  • Verwalten von Anführungszeichen in XPath (lxml)
  • Anfänger zum Schaben, bleib immer leere Listen
  • Xpath analysiert die ganze Seite, wenn ich mich nicht an
  • Parse xml mit lxml - Extrakt Element Wert
  • Wie kann ich diesen XPath-Ausdruck in BeautifulSoup übersetzen?
  • Python Crawler nicht finden spezifische Xpath
  • Wertattribut für lxml.html
  • Python ist die beste Programmiersprache der Welt.