我是python的新手,我尝试使用selenium爬行整个网站。 我想用硒来做到这一点,因为我想获得所有使用该网站的cookie。我知道其他工具可以更轻松,更快速地抓取网站,但是其他工具不能给我所有Cookie(第一方和第三方)。
这是我的代码:
from selenium import webdriver
import os, shutil
url = "http://example.com/"
links = set()
def crawl(start_link):
driver.get(start_link)
elements = driver.find_elements_by_tag_name("a")
urls_to_visit = set()
for el in elements:
urls_to_visit.add(el.get_attribute('href'))
for el in urls_to_visit:
if url in el:
if el not in links:
links.add(el)
crawl(el)
else:
return
dir_name = "userdir"
if os.path.isdir(dir_name):
shutil.rmtree(dir_name)
co = webdriver.ChromeOptions()
co.add_argument("--user-data-dir=userdir")
driver = webdriver.Chrome(options = co)
crawl(url)
print(links)
driver.close();
我的问题是,爬网功能显然无法打开网站上的所有页面。在某些网站上,我可以手动导航到未实现该功能的页面。为什么?
答案 0 :(得分:0)
我在使用webdriver时注意到的一件事是它需要时间来加载页面,这些元素不能像常规浏览器那样立即可用。
您可能要添加一些延迟,或者添加一个循环以检查某种类型的页脚,以表明该页面已加载并且可以开始爬网。