Comment obtenir une réponse JSON à partir d'un Google Chrome Selenium Webdriver client?

Actuellement, j'ai le Sélénium accroché à python pour gratter une page web. J'ai trouvé que la page en fait extrait des données à partir d'une API JSON, et je peux obtenir une réponse JSON tant que je suis connecté à la page.

Cependant, mon approche de l'obtention de cette réponse en python semble un peu junky; je sélectionne le texte placé dans <pre> balises et utiliser python json paquet pour analyser les données comme suit:

import json
from selenium import webdriver

url = 'http://jsonplaceholder.typicode.com/posts/1'
driver = webdriver.Chrome()
driver.get(url)
json_text = driver.find_element_by_css_selector('pre').get_attribute('innerText')
json_response = json.loads(json_text)

La seule raison pour laquelle j'ai besoin de sélectionner au sein de <pre> balises est que lorsque JSON s'affiche dans Chrome, il est livré formaté comme ceci:

<html>
<head></head>
<body>
<pre style="word-wrap: break-word; white-space: pre-wrap;">{
  "userId": 1,
  "id": 1,
  "title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
  "body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto"
}</pre>
</body>
</html>

Et la seule raison pour laquelle j'ai besoin de le faire à l'intérieur de sélénium est parce que j'ai besoin d'être connecté sur le site afin d'obtenir une réponse. Sinon je obtenir un 401 et pas de données.

OriginalL'auteur Roger Filmyer | 2016-05-09