Python: Как мне разобрать HTML веб-страницы, требующей входа в систему? - PullRequest
2 голосов
/ 22 февраля 2012

Я пытаюсь разобрать HTML-код веб-страницы, требующей входа в систему. Я могу получить HTML-код веб-страницы с помощью этого сценария:

from urllib2 import urlopen
from BeautifulSoup import BeautifulSoup
import re

webpage = urlopen ('https://www.example.com')
soup = BeautifulSoup (webpage)
print soup
#This would print the source of example.com

Но попытка получить источник веб-страницы, на которую я вошел, оказывается более сложной. Я попытался заменить ('https://www.example.com') на (' https://user:pass@example.com')), но получил ошибку недопустимого URL.

Кто-нибудь знает, как я мог это сделать? Заранее спасибо.

Ответы [ 4 ]

4 голосов
/ 22 февраля 2012

Selenium WebDriver (http://seleniumhq.org/projects/webdriver/) может подойти для ваших нужд здесь.Вы можете войти на страницу, а затем распечатать содержимое HTML.Вот пример:

from selenium import webdriver

# initiate
driver = webdriver.Firefox() # initiate a driver, in this case Firefox
driver.get("http://example.com") # go to the url

# locate the login form
username_field = driver.find_element_by_name(...) # get the username field
password_field = driver.find_element_by_name(...) # get the password field

# log in
username_field.send_keys("username") # enter in your username
password_field.send_keys("password") # enter in your password
password_field.submit() # submit it

# print HTML
html = driver.page_source
print html
2 голосов
/ 22 февраля 2012

Я полагаю, вы могли бы использовать Mechanize.

Python механизировать вход на сайт

В механизме вы настраиваете объект браузера, так что о куки и т. Д. Можно позаботиться.

Вы можете перебирать форму и ссылки. Например,

for form in browser.forms():
   print form

Вы можете выбрать желаемую форму и заполнить ее так, как вы хотите.

1 голос
/ 22 февраля 2012

Вы можете попытаться отправить POST-запрос в форму входа (с учетными данными для входа), затем сохранить полученный файл cookie и предоставить его при попытке загрузить страницу, на которой необходимо выполнить вход.

0 голосов
/ 29 сентября 2015

Мы можем сделать это с помощью модуля селена, как показано ниже

from selenium.selenium import selenium 
from selenium import webdriver
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import webbrowser


# initiate
my_browser = webdriver.Firefox()
my_browser.get("fill with url of the login page ")
try: 
    my_browser.implicitly_wait(35)
    username_field = my_browser.find_element_by_name(' enter the value of the name attribute')#value of the name attribute in the source code 
    password_field = my_browser.find_element_by_name('enter the value of the name attribute') 
    username_field.send_keys("fill_with password") 
    password_field.send_keys("fill with User_name")
    password_field.submit() # submit it



finally:

    print 'Look Into the Browser'
...