gpt4 book ai didi

python - 如何循环遍历多个 URL 以从 Scrapy 中的 CSV 文件中抓取?

转载 作者:行者123 更新时间:2023-11-30 22:09:29 25 4
gpt4 key购买 nike

我从阿里巴巴网站抓取数据的代码:

import scrapy




class IndiamartSpider(scrapy.Spider):
name = 'alibot'
allowed_domains = ['alibaba.com']
start_urls = ['https://www.alibaba.com/showroom/acrylic-wine-box_4.html']


def parse(self, response):
Title = response.xpath('//*[@class="title three-line"]/a/@title').extract()
Price = response.xpath('//div[@class="price"]/b/text()').extract()
Min_order = response.xpath('//div[@class="min-order"]/b/text()').extract()
Response_rate = response.xpath('//i[@class="ui2-icon ui2-icon-skip"]/text()').extract()

for item in zip(Title,Price,Min_order,Response_rate):
scraped_info = {
'Title':item[0],
'Price': item[1],
'Min_order':item[2],
'Response_rate':item[3]

}
yield scraped_info

请注意起始网址,它仅删除给定的 URL,但我希望此代码删除 csv 文件中存在的所有网址。我的 csv 文件包含大量 URL。data.csv 文件示例::

'https://www.alibaba.com/showroom/shock-absorber.html',
'https://www.alibaba.com/showroom/shock-wheel.html',
'https://www.alibaba.com/showroom/shoes-fastener.html',
'https://www.alibaba.com/showroom/shoes-women.html',
'https://www.alibaba.com/showroom/shoes.html',
'https://www.alibaba.com/showroom/shoulder-long-strip-bag.html',
'https://www.alibaba.com/showroom/shower-hair-band.html',
...........

如何一次性导入代码中csv文件的所有链接?

最佳答案

要正确循环文件而不将其全部加载到内存中,您应该使用生成器,因为 python/scrapy 中的文件对象和 start_requests 方法都是生成器:

class MySpider(Spider):
name = 'csv'

def start_requests(self):
with open('file.csv') as f:
for line in f:
if not line.strip():
continue
yield Request(line)

进一步解释一下:Scrapy 引擎使用 start_requests 来生成请求。它将继续生成请求,直到并发请求限制已满(例如 CONCURRENT_REQUESTS 等设置)。
另外值得注意的是,默认情况下 scrapy 爬行深度优先 - 较新的请求优先,因此 start_requests 循环将最后完成。

关于python - 如何循环遍历多个 URL 以从 Scrapy 中的 CSV 文件中抓取?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51914391/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com