Ich habe durch das Tutorial gearbeitet, das es an ein Projekt anpasst, das ich erreichen möchte. Mir scheint etwas schief gegangen zu sein, dass ich den Fehler einfach nicht finden kann.Ratschläge, die // td Text und Zahlen extrahieren
Bei der Verwendung von 'Scrapy Shell' kann ich die Antwort erhalten, die ich erwarte. So für diese Seite Nrl Ladder
In [1]: hxs.select('//td').extract()
Out[1]:
[u'<td>\r\n<div id="ls-nav">\r\n<ul><li><a href="http://www.nrlstats.com/"><span>Home</span></a></li>\r\n<li class="ls-nav-on"><a href="/nrl"><span>NRL</span></a></li>\r\n<li><a href="/nyc"><span>NYC</span></a></li>\r\n<li><a href="/rep"><span>Rep Matches</span></a></li>\r\n\r\n</ul></div>\r\n</td>',
u'<td style="text-align:left" colspan="5">Round 4</td>',
u'<td colspan="5">Updated: 26/3/2012</td>',
u'<td style="text-align:left">1. Melbourne</td>',
u'<td>4</td>',
u'<td>4</td>',
u'<td>0</td>',
u'<td>0</td>',
u'<td>0</td>',
u'<td>122</td>',
u'<td>39</td>',
u'<td>83</td>',
u'<td>8</td>',
u'<td style="text-align:left">2. Canterbury-Bankstown</td>',
Und weiter geht es.
Ich habe wirklich Mühe zu verstehen, wie man das Tutorial-Projekt ändert, um es in einen anderen Datentyp zu ändern.
Gibt es trotzdem eine Hilfe oder eine Dokumentationsliste, um zu sehen, welche Typen ich verwenden sollte, wenn ich 'td' oder irgendeinen anderen Gegenstand benutze. Wie ich sage, es funktioniert einfach in der Shell, aber ich kann es nicht in die Dateien umwandeln. Insbesondere sind sowohl die Teamnamen als auch die Punkte 'td', aber der Teamname ist Text.
hier ist was ich getan habe.
from scrapy.spider import BaseSpider
from scrapy.selector import HtmlXPathSelector
from nrl.items import NrlItem
class nrl(BaseSpider):
name = "nrl"
allowed_domains = ["http://live.nrlstats.com/"]
start_urls = [
"http://live.nrlstats.com/nrl/ladder.html",
]
def parse(self, response):
hxs = HtmlXPathSelector(response)
sites = hxs.select('//td')
items = []
for site in sites:
item = nrlItem()
item['team'] = site.select('/text()').extract()
item['points'] = site.select('/').extract()
items.append(item)
return items
Haben Sie BeautifulSoup versucht? Es ist ein bisschen mehr manuell, aber Sie könnten in der Lage sein, ein bisschen mehr Kontrolle auf diese Weise –
Nein noch nicht, aber vielleicht, wenn das nicht funktioniert, werde ich. – sayth
@PreetKukreti es stellt sich heraus, dass Scrapy BeautifulSoup sowie http://doc.scrapy.org/en/latest/topics/spiders.html – sayth