Javascript 是否有方法为赢得';刷新或DOM位置更改时,是否获取无效元素?
我正在使用Puppeter抓取这个网站的用户资料。我有一个个人资料链接列表,我可以使用这些链接进入每个个人资料页面,获取每个用户的twitter链接、youtube链接和其他信息 示例配置文件Javascript 是否有方法为赢得';刷新或DOM位置更改时,是否获取无效元素?,javascript,css,web-scraping,css-selectors,puppeteer,Javascript,Css,Web Scraping,Css Selectors,Puppeteer,我正在使用Puppeter抓取这个网站的用户资料。我有一个个人资料链接列表,我可以使用这些链接进入每个个人资料页面,获取每个用户的twitter链接、youtube链接和其他信息 示例配置文件 -有youtube、twitter、网站,但没有位置 -有twitter、网站但没有位置,但没有youtube 这是我用来为twitter、youtube和网站链接生成唯一选择器的配置文件 我使用ChromeDevTools获得唯一的选择器,youtube的选择器如下所示 但在我共享的另一个配置文件
- -有youtube、twitter、网站,但没有位置
- -有twitter、网站但没有位置,但没有youtube
a:nth child(4)
),但是我如何才能获取只返回那种数据的唯一选择器,例如youtube选择器获取youtube链接,如果没有链接,则它将不返回任何内容,因此返回一个
还要记住,链接可以是随机的,比如网站链接,每个用户都有一个不同的网站链接,因此您无法将href或innerText与预定义的关键字匹配。如果外部链接列表有限,您可以通过向
查询选择器提供外部网站URL的一部分来检查它们是否存在:
document.querySelector('.tv-profile__title-info-item[href^="https://www.youtube.com"]')
对于位置,标记图标所在的前面的
元素有一个非常独特的类tv-profile\uuu title-info-icon--place
,因此您可以使用textnode获取该位置
const loc = document.querySelector('.tv-profile__title-info-icon--place').nextSibling.textContent;
对于锚元素,您知道它们的href
属性不同(这就是为什么您希望它正确?),因此您可以将其用作选择器。比如说
- twitter链接:
a[href*=”://twitter.com/“]
- youtube链接:
a[href*=”:///www.youtube.com/“]
其中一个不匹配的链接是个人网站链接:
a.tv-profile__title-info-item:not([href*="://twitter.com"]):not([href*="://www.youtube.com"])
哦,好主意,好弗拉德