Получение HTML-файла с веб-страницы, которая уже открыта в браузере в Python 3 - PullRequest
0 голосов
/ 12 марта 2019

Я искал в Интернете ответ на этот вопрос, но до сих пор я не нашел совсем то, что искал.Пока что я могу открыть веб-страницу через веб-браузер Python, но я хочу знать, как загрузить файл HTML с той веб-страницы, которую Python попросил открыть браузер (в данном случае firefox).Это связано с тем, что существуют определенные веб-страницы с разделами, к которым я не могу получить полный доступ без определенного расширения / надстройки браузера (MetaMask), поскольку они также требуют входа в систему из этого расширения, что происходит автоматически, если я открываю firefox нормально или с помощьюмодуль веб-браузера.Вот почему запрос HTML с URL-адресом непосредственно из Python с кодом, подобным этому, не работает:

import requests

url = 'https://www.google.com/'
r = requests.get(url)
r.text
from urllib.request import urlopen
with urlopen(url) as f:
   html = f.read()

Единственное решение, которое я получил до сих пор, - это открыть веб-страницу с помощью веб-браузерамодуль, а затем используйте модуль pyautogui, который я могу использовать, чтобы заставить мой компьютер автоматически нажимать Ctrl + S (горячие клавиши браузера Firefox, чтобы сохранить HTML-файл с веб-страницы, на которой я сейчас нахожусь), а затем заставить его нажимать ввод.

import webbrowser
import pyautogui
import time

def get_html():
    url='https://example.com/'
    webbrowser.open_new(url) #Open webpage in default browser (firefox)
    time.sleep(1.2)
    pyautogui.hotkey('ctrl', 's')
    time.sleep(1)
    pyautogui.press('enter')


get_html()

Однако мне было интересно, есть ли более изощренный и эффективный способ, который не включает симуляцию нажатия клавиш с помощью pyautogui.

1 Ответ

0 голосов
/ 12 марта 2019

Можете ли вы попробовать следующее:

import requests

url = 'https://www.google.com/'
r = requests.get(url)
with opne('page.html', 'w') as outfile:
    outfile.write(r.text)

Если вышеуказанное решение не работает, вы можете использовать библиотеку selenium, чтобы открыть браузер:

import time
from selenium import webdriver
driver = webdriver.Firefox()
driver.get(url)
time.sleep(2)
with open('page.html', 'w') as f:
    f.write(driver.page_source)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...