我正在从zappos.com上删除一些信息,特别是详细信息页面的一部分,它显示了查看当前项目的客户也查看过的内容。
这是一个这样的项目列表: https://www.zappos.com/p/chaco-marshall-tartan-rust/product/8982802/color/725500
问题是,我发现我正在抓取的部分会立即出现在某些项目上,但在其他部分,它只会在我刷新页面2到3次后出现。
我正在使用scrapy来刮擦和飞溅渲染。
import scrapy
import re
from scrapy_splash import SplashRequest
class Scrapys(scrapy.Spider):
name = "sqs"
start_urls = ["https://www.zappos.com","https://www.zappos.com/marty/men-shoes/CK_XAcABAuICAgEY.zso"]
def start_requests(self):
for url in self.start_urls:
yield SplashRequest(url, self.parse,
endpoint='render.html',
args={'wait': 0.5},
)
def parse(self, response):
links = response.css("div._1Mgpu")
for link in links:
url = 'https://www.zappos.com' + link.css("a::attr(href)").extract_first()
yield SplashRequest(url, callback=self.parse_attr,
endpoint='render.html',
args={'wait': 10},
)
def parse_attr(self, response):
alsoviewimg = response.css("div._18jp0 div._3Olkk div.QDcUX div.slider div.slider-frame ul.slider-list li.slider-slide a img").extract()
我也从“查看此项目的客户中查看”部分中提取的元素之一。我已经测试了拉动这个和其他元素,所有这些都在scrapy shell中使用splash渲染来获得动态内容,并且它将内容拉得很好,但是在蜘蛛中它很少,如果有的话,会得到任何命中。
我可以设置一些东西,以便加载页面几次以获取内容吗?还是我想念的其他东西?
答案 0 :(得分:0)
您应该检查您要查找的元素是否存在。如果没有,请再次加载页面。
我会研究为什么刷新页面需要多次尝试,如果没有这种特殊的多次刷新解决方案,您可以解决问题。
Scrapy How to check if certain class exists in a given element
此链接说明了如何查看某个类。