![](/img/trans.png)
[英]Selenium Unable to locate element only when using headless chrome (Python)
[英]is it possible to get the selenium headless chrome XHR response when using Python 3
我正在使用 selenium google chrome headless 来捕获一些内容,我试图做的是解析 web 页面源代码并获取我想要的数据列表。 我必须编写一些解析 html 和 css 代码来获得我想要的内容。 像这样的代码:
@staticmethod
def fetch_music_download_url_impl(music_name: str):
chrome_driver_service = Service(ChromeDriverManager(chrome_type=ChromeType.GOOGLE).install())
chrome_options = Options()
chrome_options.add_argument("--no-sandbox")
chrome_options.add_argument("--headless")
chrome_options.add_argument("--disable-gpu")
chrome_options.add_argument("--remote-debugging-port=9230")
driver = webdriver.Chrome(service=chrome_driver_service,
options=chrome_options,
executable_path="/usr/local/bin/chromedriver")
try:
driver.maximize_window()
driver.get('http://example.cn/music/?page=audioPage&type=migu&name=' + music_name)
driver.implicitly_wait(5)
driver.find_element(By.CSS_SELECTOR, ".aplayer-list-download.iconfont.icon-xiazai").click()
urls = [a.get_attribute('href') for a in
driver.execute_script('return document.querySelectorAll(".modal-body a[href*=\'http\']")')]
for url in urls:
if "listenSong.do" in url:
logger.info("fetched url:" + url)
FetchMusic.do_save_music_download_url(url)
except Exception as e:
logger.error("scrapy impl error", e)
finally:
driver.stop_client()
driver.close()
driver.quit()
chrome_driver_service.stop()
这段代码有效,这只是一个演示,如果我想让它更完美,我必须编写更多的代码来匹配数据。 我想知道是否可以使用我想要获得的 json 内容来获得 google chrome 无头 XHR 响应内容。 所以我可以做更简单的步骤,只需解析 json 响应。 这样会更简单可靠,节省资源。
我应该怎么做才能获得谷歌浏览器无头 XHR json 响应?
我正在使用selenium-wire
这样做:
from seleniumwire import webdriver
然后使用此代码:
@staticmethod
def fetch_search_xhr_response(driver: any):
for request in driver.requests:
if request.response and r'api/search' in request.url:
if request.response.status_code == http.client.OK:
search_response = request.response.body
json_response = json.loads(search_response)
if json_response["code"] == http.client.OK:
FetchMusic.handle_music_list(json_response["data"])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.