从 URL 列表下载图像(Scrapy 向每个 URL 发送 2 个请求)

所以我上周运行了一个爬虫并生成了一个 CSV 文件,其中列出了我的项目所需的所有图像 URL。将 CSV 文件读取到 python 列表后,我不确定如何使用 Scrapy 通过管道简单地下载它们。我尝试了很多东西,最近我让它开始工作,但它很丑而且不太正确。对于我的 10 个图像 URL 列表,Scrapy 完成了 20 个请求的抓取,即使 10 个图像被正确存储。我可能在做一些愚蠢的事情,因为我对 Scrapy 还很陌生,但我已经通读了 Scrapy 的大部分文档,并通过谷歌搜索结果进行了多次试验和错误。


我只是想让 Scrapy 为每个 URL 发送一个请求并下载相应的图像。任何帮助,将不胜感激。我已经反对这个 3 天了。我的代码:


蜘蛛.py


import scrapy

import csv

import itertools

from ..items import ImgItem


urls=[]

with open('E:/Chris/imgUrls.csv') as csvDataFile:

    csvReader = csv.reader(csvDataFile)

    for elem in itertools.islice(csvReader, 0, 10):

        urls.append(elem[0])                #Just doing first 10 for testing

                                            #My Csv file is not the problem

                                            # ...1 url per row

class DwImgSpider(scrapy.Spider):

    name = 'dw-img'

    start_urls = urls


    def parse(self, response):

        item = ImgItem()

        img_urls = urls

        item['image_urls'] = img_urls

        return item

如果您想查看其他文件,我可以编辑它以添加它们。我只是认为这就是问题所在,因为它在技术上确实有效。再次感谢,感谢任何帮助或重定向。


千万里不及你
浏览 106回答 2
2回答

大话西游666

另一种方法。import csv,osimport itertoolsfrom simplified_scrapy import Spider, SimplifiedMain, utilsclass ImageSpider(Spider):  name = 'images'  start_urls = []  def __init__(self):      with open('E:/Chris/imgUrls.csv') as csvDataFile:          csvReader = csv.reader(csvDataFile)          for elem in itertools.islice(csvReader, 0, 10):              self.start_urls.append(elem[0])      Spider.__init__(self,self.name) # Necessary      if(not os.path.exists('images/')):          os.mkdir('images/')            def afterResponse(self, response, url, error=None, extra=None):    try:        utils.saveResponseAsFile(response,'images/','image')    except Exception as err:        print (err)    return None SimplifiedMain.startThread(ImageSpider()) # Start download

小唯快跑啊

感谢furas,我发现改变start_urls&nbsp;=&nbsp;urls到start_urls&nbsp;=&nbsp;['<just&nbsp;one&nbsp;url,&nbsp;the&nbsp;main&nbsp;website>']修复了我的请求数量问题!谢谢你furas。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python