我正在从zappos.com上抓取一些信息,特别是显示查看当前项目的客户也查看过的详细信息页面的一部分。
这就是一个这样的项目列表:https://www.zappos.com/p/chaco-marshall-tartan-rust/product/8982802/color/725500
问题是,我发现我正在抓取的部分会立即出现在一些项目上,但在其他项目上,它只会在我刷新页面两三次后才会出现。
我正在使用scrapy进行抓取,并使用splash进行渲染。
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()视图is也是我从“查看此项目的客户也查看过”部分中提取的元素之一。我已经测试了这个元素和其他元素的提取,所有这些元素都在带有splash渲染的scrapy shell中,以获得动态内容,它可以很好地提取内容,但是在爬行器中,它很少获得任何命中。
有没有什么我可以设置的,让它加载几次页面来获取内容?或者我还遗漏了什么?
发布于 2018-04-20 10:13:32
您应该检查您要查找的元素是否存在。如果没有,请重新加载页面。
我会研究为什么刷新页面需要多次尝试,您也许能够在没有这种特别的多次刷新解决方案的情况下解决这个问题。
Scrapy How to check if certain class exists in a given element
此链接说明如何查看类是否存在。
https://stackoverflow.com/questions/49932855
复制相似问题