我已经阅读了很多相似问题的答案,但对我没什么用。
我希望从链接中将已恢复的字体名称作为文本:
<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”而不是字体的名称: 从控制台查看:
但我只能看到空json:
scrapy crawl fontspider -o test.json
提前谢谢!
答案 0 :(得分:0)
您忘记了实现MyfontsitemItem
课程:
item = MyfontsitemItem()
item['fontname'] = question.xpath('//a[@class="fcFontName"]/text()').extract()
yield item
此外,初始HTML代码中不存在fcTitle
和fcFontName
。似乎稍后会使用javascript生成,因此无法使用scrapy进行提取。
您需要查找其他信息或使用某些javascript呈现代理,例如scrapy-splash