Nicht sicher, wie XPath auf einen bestimmten website-element

Ich bin derzeit versuchen zu verwenden, Scrapy, durch zu gehen der Elite Gefährlich subreddit und sammeln post-Titel, urls und Stimme zählt. Ich habe die ersten beiden gut, aber bin unsicher, wie schreiben Sie einen XPath-Ausdruck für den Zugriff auf die abgegebenen Stimmen.

selector.xpath('//div[@class="score unvoted"]').extract() funktioniert, aber es gibt Stimme zählt für alle Beiträge, die auf der aktuellen Seite (und nicht für jeden einzelnen post). response.css('div.score.unvoted').extract() Arbeitet für jeden einzelnen post, aber zurück [u'<div class="score unvoted">1</div>'], statt nur 1. ( Ich würde auch wirklich gerne wissen, wie dies mit XPath! 🙂 )

Code ist wie folgt:

class redditSpider(CrawlSpider):  # http://doc.scrapy.org/en/1.0/topics/spiders.html#scrapy.spiders.CrawlSpider
    name = "reddits"
    allowed_domains = ["reddit.com"]
    start_urls = [
    "https://www.reddit.com/r/elitedangerous",
    ]

    rules = [
        Rule(LinkExtractor(
            allow=['/r/EliteDangerous/\?count=\d*&after=\w*']),  # Looks for next page with RE
        callback='parse_item',  # What do I do with this? --- pass to self.parse_item
        follow=True),  # Tells spider to continue after callback
    ]

    def parse_item(self, response):
        selector_list = response.css('div.thing') # Each individual little "box" with content

        for selector in selector_list:
            item = RedditItem()
            item['title'] = selector.xpath('div/p/a/text()').extract()
            item['url'] = selector.xpath('a/@href').extract()
            # item['votes'] = selector.xpath('//div[@class="score unvoted"]')
            item['votes'] = selector.css('div.score.unvoted').extract()
            yield item
InformationsquelleAutor puppydog | 2015-10-13
Schreibe einen Kommentar