如何从链接获取文本(Python / Scrapy)

时间:2017-04-29 09:07:28

标签: python scrapy scrapy-spider

我已经阅读了很多相似问题的答案,但对我没什么用。

我希望从链接中将已恢复的字体名称作为文本:

<a href="/fonts/stephen-rapp/solantra/" class="fcFontName">Solantra</a>

以下是我的基本蜘蛛的代码:

import scrapy

from scrapy import Spider
from scrapy.selector import Selector

from myfontsitem.items import MyfontsitemItem

class StackSpider(Spider):
    name = "fontspider"
    start_urls = ['https://myfonts.com/']

    def parse(self, response):
        questions = Selector(response).xpath('//div[@class="fcTitle"]')

        for question in questions:
            item = MyfontsitemItem
            item['fontname'] = question.xpath('//a[@class="fcFontName"]/text()').extract()
            yield item

这看起来如何查看我的items.py:

import scrapy
from scrapy.item import Item, Field

class MyfontsitemItem(scrapy.Item):
    fontname = scrapy.Field()

这是我在Chrome控制台中的xpath的结果 - 它在页面上显示了这些元素的数量,但仅作为单词“text”而不是字体的名称: 从控制台查看:

enter image description here

但我只能看到空json:

scrapy crawl fontspider -o test.json

提前谢谢!

1 个答案:

答案 0 :(得分:0)

您忘记了实现MyfontsitemItem课程:

            item = MyfontsitemItem()
            item['fontname'] = question.xpath('//a[@class="fcFontName"]/text()').extract()
            yield item

此外,初始HTML代码中不存在fcTitlefcFontName。似乎稍后会使用javascript生成,因此无法使用scrapy进行提取。

您需要查找其他信息或使用某些javascript呈现代理,例如scrapy-splash