我非常想解决我的编码难题,该难题已经 5 天没有解决。目标是使用 Selenium 包抓取网站。我的代码如下。
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_experimental_option("detach", True)
chrome_options.add_argument('--headless=new')
chrome_options.add_argument('--no-sandbox')
service = Service()
browser = webdriver.Chrome(service=service, options=chrome_options)
browser.get('law.go.kr/')
time.sleep(5)
结果如下。显示
InvalidArgumentException
。在我看来,“chrome=122.0.6261.111”是关键点。
InvalidArgumentException: Message: invalid argument (Session info: chrome=122.0.6261.111)
Stacktrace:
#0 0x5745bb24dec3 \<unknown\>
#1 0x5745baf45b37 \<unknown\>
#2 0x5745baf2d4df \<unknown\>
#3 0x5745baf2b863 \<unknown\>
#4 0x5745baf2bdaa \<unknown\>
#5 0x5745baf4849e \<unknown\>
我猜测弹出异常的原因是Chrome版本不匹配。
我的 Chrome 版本:122.0.6261.112
我的 Chrome-Webdriver 版本:122.0.6261.111
所以我尝试了几种不同的方法,但没有成功。
我的尝试如下。首先,使用 webdriver-manager 代码。
from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService
from webdriver_manager.chrome import ChromeDriverManager
driver=webdriver.Chrome(service=ChromeService(ChromeDriverManager().install()))
driver.get('law.go.kr')
但是,它也不起作用。错误消息如下。
The point is 'NoneType' object has no attribute 'split'
。我不知道为什么会这样。
determined_browser_version = ".".join(determined_browser_version.split(".")\[:3\])
latest_release_url = (self.\_latest_release_url
AttributeError: 'NoneType' object has no attribute 'split'
问题:
.get
方法需要完全限定的 URL,而不是字符串。
更改此:
browser.get('law.go.kr/')
致:
browser.get('https://law.go.kr/')