【发布时间】:2021-04-11 14:31:28
【问题描述】:
当我设置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
这里也是我print(driver.page_source)get()之后的截图:
【问题讨论】:
-
你能解释一下到底是什么问题吗?
-
@PApostol,当我添加
options.add_argument("--headless")时,刮板没有返回任何结果。但是,当options.add_argument("--headless")被删除时,它可以正常工作 -
也许可以尝试使用
options.headless = True而不是options.add_argument("--headless")看看是否有区别。还可以考虑包括一个人们可以运行以重现该问题的示例。 -
@PApostol
options.headless = True也不起作用。 -
@ApplePie 截图或打印
get()后面的driver.page_source,确认get()是否成功。
标签: python selenium web-scraping selenium-chromedriver cloudflare