【发布时间】:2019-06-24 16:37:05
【问题描述】:
我正在使用 Cypress 以无限滚动来抓取网站。
该网站是使用 React 制作的,当用户在输入中输入搜索词后,随着滚动,更多产品会出现在与输入的搜索词匹配的页面上。
到目前为止,我得到的代码会打开一个 URL,导航到该 URL 并收集当前可见的所有 href。
我想知道如何让 cypress 进一步向下滚动,在向下滚动页面时慢慢收集所有 href,然后最后将 href 写入 json。
这是我到目前为止的代码,减去滚动:
const arrayOfHrefs = [];
describe('Get links', () => {
it.only('should do a product search', () => {
cy.visit('https://www.testsite.com');
cy.wait(5000);
cy.get('#product_input').type('socks');
cy.contains('socks').click(); // renders new content on the client side
cy.wait(10000);
cy.get('a').each(($a) => {
const link = $a.attr('href');
arrayOfHrefs.push(link); // grabs all visible links and pushes them to array
}).then(() => {
console.log(arrayOfHrefs)
cy.writeFile('data.json', { urls: arrayOfHrefs }) // writes array to disk
})
});
});
【问题讨论】:
标签: web-scraping infinite-scroll cypress