【问题标题】:Crawl URL's with Scrapy which are stored in csv使用存储在 csv 中的 Scrapy 抓取 URL
【发布时间】:2020-03-28 01:33:40
【问题描述】:

我正在尝试实现一个读取 csv 文件的 Scrapy Spider。 csv 文件将包含两列,如下所示:

1,google.com
2,microsoft.com
3,netflix.com
...

蜘蛛现在应该将这些站点的完整 HTML 代码存储在指定目录中,并将抓取的 url + 存储的 HTML 文件的路径插入 JSON 数组文件。

到目前为止,我找到了以下解决方案:

class RankingSpider(scrapy.Spider):
    name = 'non-xss'
    start_urls = []

    custom_settings = {
        'CLOSESPIDER_ITEMCOUNT': '50000',  # Nach x Itmes Crawler beenden
        'FILES_STORE': 'non-xss/html/',
        'METAREFRESH_ENABLED': False
    }

    def __init__(self, *args, **kwargs):
        super().__init__(**kwargs)
        with open('/home/marcel/Desktop/crawl/top-1m.csv', 'r') as f:
            reader = csv.reader(f)
            n = 0
            for row in reader:
                if n >= 0 and n < 10000:
                    self.start_urls.extend(['https://www.' + row[1] + '/'])
                    print(row[1])
                n += 1

    def parse(self, response):
        item = UmbrellaItem()
        filename = sha1(response.url.encode()).hexdigest()
        with open(self.custom_settings['FILES_STORE'] + filename, 'wb') as f:
            f.write(response.body)
        item['url'] = response.url
        item['file_path'] = self.custom_settings['FILES_STORE'] + filename
        return item

该解决方案执行我希望它执行的操作,但它会在几秒钟后停止,然后停止。我猜我遇到了太多连接的问题。 我还尝试在以下scrapy项目中设置settings.py:

RETRY_TIMES = 0
CONCURRENT_REQUESTS = 32

有人有更稳定的解决方案吗?

感谢您提供的任何帮助。

【问题讨论】:

  • 你的意思是两列吗?
  • 是的,对不起,我指的是第二句中的列。
  • 某些目标网站可能故意让您的请求超时。你有超时吗?日志说什么?

标签: python csv scrapy web-crawler


【解决方案1】:

一种方法是使用 Scrapy。

Scrapy 可以让你发送一个 http 请求。这是相关的文档:https://docs.scrapy.org/en/latest/topics/request-response.html#scrapy.http.Request

另一种方法是使用 Python 中的请求库。 可以在此处找到相关文档:https://requests.readthedocs.io/en/master/

【讨论】:

  • 我已经编辑了问题并添加了到目前为止我找到的解决方案。但是我仍然有一个问题,因为下载会在一段时间后停止并且停止。拥有数千个 start_url 似乎不是一个好主意。你有什么想法吗?
猜你喜欢
  • 2022-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-06
  • 2016-07-16
  • 1970-01-01
  • 1970-01-01
  • 2014-02-27
相关资源
最近更新 更多