gpt4 book ai didi

python - 如何让scrapy爬虫不以指数方式聚合结果

转载 作者:太空宇宙 更新时间:2023-11-03 21:17:37 26 4
gpt4 key购买 nike

所以我对 Python 还很陌生,我正在尝试制作一个 scrapy 爬虫来从网站中提取经销商数据。但我没有得到我预期的结果。这是我的代码:

class QuotesSpider(scrapy.Spider):
name = "final_url"

def start_requests(self):
urls = [
"https://www.bosch-professional.com/ar/es/dl/localizador-de-distribuidores/dealerslist/almagro/2675585174/?countrySelectorCode=AR"
]


for url in urls:
yield scrapy.Request(url=url, callback=self.parse)


def parse(self, response):

urls_ = []
for item in response.css('div.row.m-dealer_list__row'):

half_urls_ = item.css('div.m-dealer_list__addr a.link.trackingElement::attr(href)').getall()

for half in half_urls_:
urls_.append('https://www.bosch-professional.com/ar/es/dl/localizador-de-distribuidores/' + half)

with open('sub_urls.txt', 'a') as doc:
doc.write(str(urls_))

我期望有一个链接(href)到每个经销商 -5 在本例中 - 我可以在其中提取姓名、地址、邮件、电话和网站。相反,我得到了这个令人困惑的结果:

['https://www.bosch-professional.com/ar/es/dl/localizador-de-distribuidores/localizador-de-distribuidores/distribuidor/boschla00077/almagro/colombo-fernando-javier/?countrySelectorCode=AR']
['https://www.bosch-professional.com/ar/es/dl/localizador-de-distribuidores/localizador-de-distribuidores/distribuidor/boschla00077/almagro/colombo-fernando-javier/?countrySelectorCode=AR',
'https://www.bosch-professional.com/ar/es/dl/localizador-de-distribuidores/localizador-de-distribuidores/distribuidor/boschla00417/almagro/easy-rivadavia-%28e164%29-cencosud/?countrySelectorCode=AR']
['https://www.bosch-professional.com/ar/es/dl/localizador-de-distribuidores/localizador-de-distribuidores/distribuidor/boschla00077/almagro/colombo-fernando-javier/?countrySelectorCode=AR',
'https://www.bosch-professional.com/ar/es/dl/localizador-de-distribuidores/localizador-de-distribuidores/distribuidor/boschla00417/almagro/easy-rivadavia-%28e164%29-cencosud/?countrySelectorCode=AR',
'https://www.bosch-professional.com/ar/es/dl/localizador-de-distribuidores/localizador-de-distribuidores/distribuidor/boschla00506/almagro/g-y-p-new-tree-s.a/?countrySelectorCode=AR']
['https://www.bosch-professional.com/ar/es/dl/localizador-de-distribuidores/localizador-de-distribuidores/distribuidor/boschla00077/almagro/colombo-fernando-javier/?countrySelectorCode=AR',
'https://www.bosch-professional.com/ar/es/dl/localizador-de-distribuidores/localizador-de-distribuidores/distribuidor/boschla00417/almagro/easy-rivadavia-%28e164%29-cencosud/?countrySelectorCode=AR',
'https://www.bosch-professional.com/ar/es/dl/localizador-de-distribuidores/localizador-de-distribuidores/distribuidor/boschla00506/almagro/g-y-p-new-tree-s.a/?countrySelectorCode=AR',
'https://www.bosch-professional.com/ar/es/dl/localizador-de-distribuidores/localizador-de-distribuidores/distribuidor/boschla00303/almagro/medrano-construcciones-s./?countrySelectorCode=AR']
['https://www.bosch-professional.com/ar/es/dl/localizador-de-distribuidores/localizador-de-distribuidores/distribuidor/boschla00077/almagro/colombo-fernando-javier/?countrySelectorCode=AR',
'https://www.bosch-professional.com/ar/es/dl/localizador-de-distribuidores/localizador-de-distribuidores/distribuidor/boschla00417/almagro/easy-rivadavia-%28e164%29-cencosud/?countrySelectorCode=AR',
'https://www.bosch-professional.com/ar/es/dl/localizador-de-distribuidores/localizador-de-distribuidores/distribuidor/boschla00506/almagro/g-y-p-new-tree-s.a/?countrySelectorCode=AR',
'https://www.bosch-professional.com/ar/es/dl/localizador-de-distribuidores/localizador-de-distribuidores/distribuidor/boschla00303/almagro/medrano-construcciones-s./?countrySelectorCode=AR',
'https://www.bosch-professional.com/ar/es/dl/localizador-de-distribuidores/localizador-de-distribuidores/distribuidor/boschla00304/almagro/medrano-construcciones-s.a./?countrySelectorCode=AR']

我认为这可能是由于 .write 函数中的“a”模式造成的,但如果我使用“w”,我只会得到最后一个链接。我生成的这个 url 只是 700 多个中的一个,因此创建的初始 .text 非常大且无用。

预先感谢您提供的任何帮助。我觉得这是一个我没有看到的非常愚蠢的问题。

最佳答案

写入文件的行位于其中:

            for half in half_urls_:
urls_.append('https://www.bosch-professional.com/ar/es/dl/localizador-de-distribuidores/' + half)

with open('sub_urls.txt', 'a') as doc:
doc.write(str(urls_))

将其向后移动一定程度的缩进。它将每个经销商的完整经销商列表附加到文件中。

尝试这样:

            for half in half_urls_:
urls_.append('https://www.bosch-professional.com/ar/es/dl/localizador-de-distribuidores/' + half)

with open('sub_urls.txt', 'a') as doc:
doc.write(str(urls_))

关于python - 如何让scrapy爬虫不以指数方式聚合结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54565486/

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