我试着用selenium plus scrapy从vmware官方网站上抓取产品信息。但是我从来没有用代码完全加载页面,即使等待时间更长。这是我的脚本。
class VmwareSpiderSpider(scrapy.Spider):
name = 'vmware_spider'
allowed_domains = ['customerconnect.vmware.com']
start_urls = [
'https://customerconnect.vmware.com/en/downloads/details?downloadGroup=NSX-4011&productId=1339#product_downloads']
def __init__(self):
self.driver = webdriver.Firefox()
def parse(self, response):
self.driver.get(response.url)
self.driver.implicitly_wait(30)
wait = WebDriverWait(self.driver, 120, poll_frequency=5)
wait.until(EC.presence_of_element_located((By.PARTIAL_LINK_TEXT, "Read More")))
with open("source.html", "w") as f:
f.write(self.driver.page_source)
self.driver.quit()
我不熟悉网页设计和架构,所以我有几个问题:
1.如果我有20个包含“阅读更多”的项目,我如何确保所有20个项目在我开始定位元素之前都已加载。
1.在原始网页中,read more
类有一个onclick
属性。但是在我使用selenium检索的页面源代码中,该属性消失了。因此,单击不指向任何地方。是什么导致了这个问题?
任何提示都将不胜感激。非常感谢。
1条答案
按热度按时间zvokhttg1#
所有需要的数据都通过
API
调用json响应作为get方法加载。如果你按F12
,你会发现网络选项卡被选中,从左上角的圆形图标刷新url,点击XHR,名称,标题,预览,你会得到关于API url的一切输出: