Я пытаюсь очистить страницы с помощью JavaScript, используя Python.Я новичок в этом, поэтому я прочитал много уроков.Наконец-то я обнаружил, что мне нужен селен, beautiful_soup и веб-драйвер firefox.Итак, я сделал функцию (я тоже добавляю соответствующие модули).
import bs4
import requests
from urllib.request import Request
from urllib.request import urlopen as uReq
from bs4 import BeautifulSoup as soup
from selenium import webdriver
from selenium.webdriver.firefox.options import Options
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
def page_souping_js(url):
options = Options()
options.add_argument("--headless")
driver = webdriver.Firefox(firefox_options=options)
driver.get(url)
complete_page = driver.page_source
driver.close()
page_soup = soup(complete_page,"html.parser")
return page_soup
, который, казалось, работал нормально, пока я не попытался создать из него файл .exe (с помощью pyinstaller) и запустить его на другом компьютере (он прекрасно работает на моем компьютере), где я получил эту ошибку:
selenium.common.exceptions.SessionNotCreatedException: Сообщение: невозможно найти соответствующий набор возможностей
Итак, я прочитал еще раз на эту тему и "исправлено"мой код:
def page_souping_js(url):
cap = DesiredCapabilities().FIREFOX
cap["marionette"] = False
options = Options()
options.add_argument("--headless")
driver = webdriver.Firefox(capabilities=cap, firefox_options=options)
driver.get(url)
complete_page = driver.page_source
driver.close()
page_soup = soup(complete_page,"html.parser")
return page_soup
, так как я сделал это изменение, но браузер открывается, даже если я добавил аргумент" --headless ".1. Являются ли эти две возможности и firefox_options несовместимыми?2. если мне нужно установить "марионетку" в False, есть ли способ выполнить эту функцию без открытия браузера?Или есть другая проблема вокруг этой проблемы?
Надеюсь, у кого-то будет ответ на этот вопрос.