我目前在使用爬虫时,当我设置options.add_argument("--headless")
时遇到了问题。但是,当它被移除时,就可以完美地工作。有没有人能指导我如何在无头模式下达到相同的结果?
以下是我的Python代码:
from seleniumwire import webdriver as wireDriver
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.chrome.options import Options
chromedriverPath = '/Users/applepie/Desktop/chromedrivermac'
def scraper(search):
mit = "https://orbit-kb.mit.edu/hc/en-us/search?utf8=✓&query=" # Empty search on mit site
mit += "+".join(search) + "&commit=Search"
results = []
options = Options()
options.add_argument("--headless")
options.add_argument("--window-size=1440, 900")
driver = webdriver.Chrome(options=options, executable_path= chromedriverPath)
driver.get(mit)
# Wait 20 seconds for page to load
timeout = 20
try:
WebDriverWait(driver, timeout).until(EC.visibility_of_element_located((By.CLASS_NAME, "header")))
search_results = driver.find_element_by_class_name("search-results")
for result in search_results.find_elements_by_class_name("search-result"):
resultObject = {
"url": result.find_element_by_class_name('search-result-link').get_attribute("href")
}
results.append(resultObject)
driver.quit()
except TimeoutException:
print("Timed out waiting for page to load")
driver.quit()
return results
这是我使用
get()
方法后,调用print(driver.page_source)
的屏幕截图:
![enter image description here](https://istack.dev59.com/cpAm8.webp)
options.add_argument(“--headless”)
时,爬虫程序没有返回任何结果。但是,当删除options.add_argument(“--headless”)
时,它可以正常工作。 - ApplePieoptions.headless = True
而不是options.add_argument("--headless")
看看是否有区别。另外考虑包含一个可运行的示例以重现问题。 - PApostoloptions.headless = True
也不起作用。 - ApplePieget()
后截屏或打印driver.page_source
来确认get()
是否成功。 - undetected Selenium