【发布时间】:2012-11-08 23:18:51
【问题描述】:
我在 scrapy 框架中收到此错误。这是我在 spiders 目录下的 dmoz.py:
from scrapy.spider import BaseSpider
from scrapy.selector import HtmlXPathSelector
from dirbot.items import Website
class DmozSpider(BaseSpider):
name = "dmoz"
allowed_domains = ["dmoz.org"]
f = open("links.csv")
start_urls = [url.strip() for url in f.readlines()]
f.close()
def parse(self, response):
hxs = HtmlXPathSelector(response)
sites = hxs.select('//ul/li')
items = []
for site in sites:
item = Website()
item['name'] = site.select('a/text()').extract()
item['url'] = site.select('a/@href').extract()
item['description'] = site.select('text()').extract()
items.append(item)
return items
运行此代码时出现此错误:
<GET %22http://www.astate.edu/%22>: Unsupported URL scheme '': no handler available for that scheme in Scrapy
这是我的 links.csv 内容:
http://www.atsu.edu/
http://www.atsu.edu/
http://www.atsu.edu/
http://www.atsu.edu/
http://www.atsu.edu/
http://www.atsu.edu/
http://www.atsu.edu/
http://www.atsu.edu/
http://www.atsu.edu/
http://www.atsu.edu/
http://www.atsu.edu/
http://www.atsu.edu/
http://www.atsu.edu/
http://www.atsu.edu/
http://www.atsu.edu/
http://www.atsu.edu/
links.csv 中有 80 个 URL。我该如何解决这个错误?
【问题讨论】:
-
作为旁注,您应该将读取的 CSV 文件移到属性声明部分之外,可能是在一个微小的静态或类方法中(我不熟悉 scrapy)。另请查看this question 的答案,其中建议覆盖
start_requests方法。
标签: python web-crawler scrapy