我已经开始学习Python,
了,到目前为止我很喜欢它。我一直在寻找不同的图书馆。所以我偶然发现了Scrapy
并认为我会尝试一下。我希望从daylerees
颜色方案(来自github)获取所有链接并将它们转储到某处以便快速访问。
所以我这样做了:
import scrapy
class ThemeItem(scrapy.Item):
name = scrapy.Field()
link = scrapy.Field()
class ThemeSpider(scrapy.Spider):
name = 'themespider'
start_urls = ['https://github.com/daylerees/colour-schemes/tree/master/jetbrains']
def parse(self, response):
for sel in response.xpath('//a[@class="js-directory-link"]'):
url = ThemeItem()
url['name'] = sel.xpath('text()')
url['link'] = sel.xpath('@href')
yield url
它根本没有输出任何东西。任何指导都将非常感谢。
我正在运行它:
scrapy runspider spider.py
答案 0 :(得分:1)
包含js-directory-link
类的元素也有其他类,例如:
<a href="/daylerees/colour-schemes/tree/master/jetbrains/contrast" class="js-directory-link js-navigation-open" id="c8fd07f040a8f2dc85f5b2d3804ea3db-6b332f6820ec47d7ade641dbf72108b025b10440" title="contrast">contrast</a>
您需要通过contains()
使用部分类属性匹配:
//a[contains(@class, "js-directory-link")]
或者,您可以使用CSS selectors:
for sel in response.css('a.js-directory-link'):
虽然我真的会考虑改用github API。