从网站下载文件列表

Downloading a list of files from a website

我有一个特定要求,需要从网站下载超过 100 个文件。我想下载所有这些文件,但文件名不连续(例如 www.blah.com/1 , www.blah.com/3, www.blah.com/4, www.blah.com/10).我想遍历整个序列,如果 link 不可用则跳过。在 python 中最有效的方法是什么?

假设您有一个正常的 TCP/IP 连接,下面的代码可能有用

import urllib2

def download(link, filename):
  try:
    req=urllib2.urlopen(link)
  except urllib2.HTTPError:
    pass
  if req.has_data():
    open(filename,"wb").write(req.get_data())

#here goes your function that loops over
uri="http://example.com/"
for x in xrange(1, 101):
  download(uri+str(x), str(x))

只是一个例子。随意修改

您可能需要查看 Scrapy 网页抓取框架。

默认情况下,如果响应状态代码为 4xx 或 5xx,Scrapy 将跳过页面。

你应该从这些方面着手:

import scrapy

class MySpider(scrapy.Spider):
    name = "my_spider"
    allowed_domains = ["domain.com"]

    def start_requests(self)
        for page in xrange(100):
            yield scrapy.Request("http://domain.com/page/{page}".format(page=page))

    def parse(self, response):
        # TODO: parse page

此外,请确保您是一名优秀的网络抓取公民,请参阅: