Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Selenium Python在不重复的情况下单击站点的所有链接?_Python_Selenium_Selenium Webdriver_Web Scraping_Web Crawler - Fatal编程技术网

如何使用Selenium Python在不重复的情况下单击站点的所有链接?

如何使用Selenium Python在不重复的情况下单击站点的所有链接?,python,selenium,selenium-webdriver,web-scraping,web-crawler,Python,Selenium,Selenium Webdriver,Web Scraping,Web Crawler,我想刮一个网站的所有页面,并点击所有的链接可点击的网站没有点击链接2次。 我想留在网站上,我的意思是不要点击网站的facebook链接 我试试这个: id = "nameOfSite" driver.find_element_by_css_selector('a[href*="%s"]' % id).click() 一种解决方案是:将页面中的所有链接存储在set中。在集合中存储URL的原因是它只存储唯一的值。避免了冗余。然后使用foreach循环查看set并执行CTRL+click操作。此操作

我想刮一个网站的所有页面,并点击所有的链接可点击的网站没有点击链接2次。 我想留在网站上,我的意思是不要点击网站的facebook链接

我试试这个:

id = "nameOfSite"
driver.find_element_by_css_selector('a[href*="%s"]' % id).click()

一种解决方案是:将页面中的所有链接存储在
set
中。在
集合中存储URL的原因是它只存储唯一的值。避免了冗余。然后使用
foreach
循环查看
set
并执行CTRL+click操作。此操作将在“新建”选项卡中打开链接。因此,您将停留在当前页面。请在下面找到示例代码片段

List<WebElement> allUrls = <locator to get all the urls>;
// Converting List to Set
Set<WebElement> uniqueUrls = new HashSet<WebElement>(allUrls);
for(WebElement eachUrl : uniqueUrls) {
    eachUrl.sendKeys(Keys.chord(Keys.CONTROL, Keys.RETURN));
}
List allUrls=;
//将列表转换为集合
Set uniqueUrls=新哈希集(allUrls);
for(WebElement-eachUrl:uniqueurl){
eachUrl.sendKeys(Keys.chord(Keys.CONTROL,Keys.RETURN));
}

希望这有帮助。

使用httplib。使用selenium获取网页上的链接,制作一个列表,并将该列表传递给http客户端并验证响应。添加html或URL您的答案不是用Python编写的