在Scrapy中生成基于邮政编码的起始URL

时间:2013-12-21 21:32:58

标签: python regex python-2.7 scrapy

我需要在我的刮刀中生成start_urls,其中Scrapy将填写邮政编码。只要它们遵循#####格式(我不认为Scrapy需要花费很长时间才能检查100k页面),我对那些不会生成实际邮政编码的丢失代码感到满意。 我在另一个问题上找到了这个,我希望它可以用最少的编辑工作。 (或者在scrapy中有更好的约定吗?)

class ExampleSpider(BaseSpider):
    name = "test_code"
    allowed_domains = ["www.example.com"]

    def start_requests(self):
        for i in xrange(100000):
            yield self.make_requests_from_url("http://www.example.com/zipcode/%d/search.php" % i)

我需要更改以填写所有五位数字(00014,例如)?代码是否会像那样工作?另外,我需要另一个(单独的)来填写州名。同样地,除非有一种有效的方法告诉Python填写州缩写,否则我可以使用丢失的缩写。所以,例如www.example.com/AL/search.php和www.example.com/GA/search.php等我只想让它用任意两个字母自动填充这两个字母 - 我如何填写def start_requests(self)为此?

1 个答案:

答案 0 :(得分:1)

对于邮政编码,请将其设为"%05d";这将告诉格式化程序使用零填充五个字符。

对于州,我建议迭代一个列表:

for state in ["AL", "GA", ...]:
    # use state: "www.example.com/%s/search.php" % state