python - 异常。ValueError : unsupported format character in python scrapy

标签 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,而且当我们提供一个没有格式说明符的单个整数时,我可以获得响应。 请让我知道以上内容,

提前致谢。

最佳答案

您的 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/

相关文章:

python - 如何将参数名称作为参数传递?

python - TypeError : TextIOWrapper. seek() 没有关键字参数

python - 从 Flask 运行 Scrapy

python - 如何设置 Scrapy Auto_Throttle 设置

Python 读取下一个()

python - 使用 python sqlite3 从 sqlite 表中选择 rowid 在列表中 - DB-API 2.0

python - Scrapy - 如何启动同一个蜘蛛进程的多个实例?

python - 下载器中间件忽略对 scrapy 中某个 URL 的所有请求

python - Scrapy 发出请求后不返回

python - 如何根据python中的位置获取十六进制数的位值