嗨,我正在研究 scrapy
下面是我的代码
class examplespider(CrawlSpider):
name = "example"
domain_name = "www.example.com"
start_urls = ["http://www.example.com/sch/mobile-/67939/i.html?_catref=1"]
def parse(self,response):
hxs = HtmlXPathSelector(response)
for i in xrange(1,10):
yield Request(url="http://www.example.com/sch/mobile-/67939/i.html?_catref=1?_trkparms=65%253A12%257C66%253A1%257C39%253A1%257C72%253A3276&rt=nc&_catref=1&_dmpt=IN_Mobile_Phones&_trksid=p3286.c0.m14.l1513&_pgn=%d"%i,
callback=self.parse_item)
def parse_item(self,response):
print response,"Here it is................."
结果::
File "/home/local/username/project/example/example/spiders/example_spider.py", line 117, in parse
yield Request(url="http://www.example.com/sch/mobile-/67939/i.html?_catref=1?_trkparms=65%253A12%257C66%253A1%257C39%253A1%257C72%253A3276&rt=nc&_catref=1&_dmpt=IN_Mobile_Phones&_trksid=p3286.c0.m14.l1513&_pgn=%d"%i,
callback=self.parse_item)
exceptions.ValueError: unsupported format character 'A' (0x41) at index 61
任何人都可以告诉我代码出了什么问题,为什么显示不支持的格式字符代码错误,这里是否不支持 url,而且当我们提供一个没有格式说明符的单个整数时,我可以获得响应。 请让我知道以上内容,
提前致谢。
最佳答案
您的 URL 包含许多未转义的 %
符号,并且您尝试使用 %
运算符将值插入到字符串中。 Python 正在寻找 %
字符来将您的 i
替换到 URL 中。但它看到的第一个可能是 %A
并且这不是有效的格式字符。错误消息甚至可以准确地告诉您发生了什么以及发生在哪里。
可能最简单的通用解决方案是使用字符串的 .format()
方法而不是 %
运算符:
("http://www.example.com/sch/mobile-/67939/i.html?_catref=1?"
"_trkparms=65%253A12%257C66%253A1%257C39%253A1%257C72%253A3276&rt=nc"
"&_catref=1&_dmpt=IN_Mobile_Phones&_trksid=p3286.c0.m14.l1513&_pgn={0}").format(i)
它使用不同的格式占位符,这些占位符与您的网址使用 %
字符不冲突。
或者,在本例中,由于您只想将变量附加到 URL,因此可以使用直接串联:
("http://www.example.com/sch/mobile-/67939/i.html?_catref=1?"
"_trkparms=65%253A12%257C66%253A1%257C39%253A1%257C72%253A3276&rt=nc"
"&_catref=1&_dmpt=IN_Mobile_Phones&_trksid=p3286.c0.m14.l1513&_pgn=") + str(i)
关于python - 异常。ValueError : unsupported format character in python scrapy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11045808/