与本地版本相比,我在 Scrapy 云上部署的爬虫产生了意想不到的结果。我的本地版本可以轻松提取产品项目的每个字段(来自在线零售商),但在 scrapy 云上,字段“配料”和字段“价格列表”始终显示为空。您将在附有图片的图片中看到我总是空的两个元素,而它完美地工作我使用 Python 3 并且堆栈配置了 scrapy:1.3-py3 配置。我首先认为这是正则表达式和 unicode 的问题,但似乎不是。所以我尝试了一切:你,你的 RE.ENCODE .... 并没有工作。
对于成分部分,我的代码如下:
data_box=response.xpath('//*[@id="ingredients"]').css('div.information__tab__content *::text').extract()
data_inter=''.join(data_box).strip()
match1=re.search(r'([Ii]ngr[ée]dients\s*\:{0,1})\s*(.*)\.*',data_inter)
match2=re.search(r'([Cc]omposition\s*\:{0,1})\s*(.*)\.*',data_inter)
if match1:
result_matching_ingredients=match1.group(1,2)[1].replace('"','').replace(".","").replace(";",",").strip()
elif match2 :
result_matching_ingredients=match2.group(1,2)[1].replace('"','').replace(".","").replace(";",",").strip()
else:
result_matching_ingredients=''
ingredients=result_matching_ingredients
似乎匹配从未发生在scrapy cloud上。
对于价格,我的代码如下:
list_prices=[]
for package in list_packaging :
tonnage=package.css('div.product__varianttitle::text').extract_first().strip()
prix_inter=(''.join(package.css('span.product__smallprice__text').re(r'\(\s*\d+\,\d*\s*€\s*\/\s*kg\)')))
prix=prix_inter.replace("(","").replace(")","").replace("/","").replace("€","").replace("kg","").replace(",",".").strip()
list_prices.append(prix)
那是同一个故事。还是空的。
我再说一遍:它在我的本地版本上运行良好。这两个数据是唯一引起问题的数据:我正在使用scrapy cloud提取一堆其他数据(也使用正则表达式),我对此非常满意?
有什么想法吗?