exceptions.ValueError:python scrapy中不支持的格式字符

时间:2012-06-15 06:43:20

标签: python scrapy

你好我正在研究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,当我们提供没有格式说明符的单个整数时我也能够得到响应。 请让我知道以上内容,

提前致谢。

2 个答案:

答案 0 :(得分:3)

您的网址包含许多未转义的%符号,您尝试使用%运算符将值插入字符串。 Python正在寻找%个字符来将i替换为网址。但它看到的第一个可能是%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不冲突。

或者,在这种情况下,特别是,因为您只想将变量附加到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)

答案 1 :(得分:-1)

我认为问题是你在字符串插值中标记为整数但是字符串或其他字符,请尝试检查i的类型。