![](/img/trans.png)
[英]Render javascript website code with selenium headless chrome
[英]How to enable JavaScript with headless Chrome in selenium
import requests
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.chrome.options import Options
import time
def checkLinkedIn(command):
url = f"https://www.linkedin.com/in/{command}"
path = "C:\Program Files (x86)\chromedriver.exe"
options = Options()
options.add_argument("--headless")
driver = webdriver.Chrome(path, options=options)
driver.get(url)
soup = BeautifulSoup(driver.page_source, 'html.parser')
time.sleep(2)
driver.quit()
name = soup.find("h1", attrs={"class": "top-card-layout__title"})
if name:
print("LinkedIn profile found")
print(url)
else:
print("No LinkedIn profile found")
def checkTwitter(command):
url = f"https://www.twitter.com/{command}"
path = "C:\Program Files (x86)\chromedriver.exe"
options = Options()
options.add_argument("--headless")
driver = webdriver.Chrome(path, options=options)
driver.get(url)
soup = BeautifulSoup(driver.page_source, 'html.parser')
time.sleep(2)
driver.quit()
at_tag = soup.find("div", attrs={"dir": "ltr"})
print(soup.text)
if at_tag:
print("Twitter profile found")
print(url)
else:
print("No Twitter profile found")
usrname = input("--> ")
checkTwitter(usrname)
LinkedIn function 有效。 然而,Twitter 提出了這個:
JavaScript 不可用。 我們檢測到 JavaScript 在此瀏覽器中被禁用。 請啟用 JavaScript 或切換到支持的瀏覽器以繼續使用 twitter.com。 您可以在我們的幫助中心查看支持的瀏覽器列表。
如何在無頭 Chrome 中啟用 Javascript? 提前致謝。
這可能是因為該網站檢測到它是無頭瀏覽器並禁用了某些功能。
為了繞過它,您可以(盡可能多地)欺騙無頭瀏覽器的身份來欺騙網站。
嘗試以下選項:
from fake_useragent import UserAgent
options = webdriver.ChromeOptions()
options.add_argument('--headless')
options.add_argument("--incognito")
options.add_argument("--nogpu")
options.add_argument("--disable-gpu")
options.add_argument("--window-size=1280,1280")
options.add_argument("--no-sandbox")
options.add_argument("--enable-javascript")
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option('useAutomationExtension', False)
options.add_argument('--disable-blink-features=AutomationControlled')
ua = UserAgent()
userAgent = ua.random
driver = webdriver.Chrome(options=options)
driver.execute_script("Object.defineProperty(navigator, 'webdriver', {get: () => undefined})")
driver.execute_cdp_cmd('Network.setUserAgentOverride', {"userAgent": userAgent})
這對我來說適用於一個特別頑固的網站。 我從許多 SO 答案中收集的選項,尤其是這個答案: https://stackoverflow.com/a/53040904/5339857
利用
options.add_argument("--enable-javascript")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.