Python Selenium访问HTML源代码

时间:2011-10-22 18:38:27

标签: python selenium selenium-webdriver

如何使用带有Python的Selenium模块获取变量中的HTML源?

我想做这样的事情:

from selenium import webdriver
browser = webdriver.Firefox()
browser.get(raw_input("Enter URL: "))
if "whatever" in html_source:
    # Do something
else:
    # Do something else

我该怎么做?我不知道如何访问HTML源代码。

8 个答案:

答案 0 :(得分:162)

您需要调用page_source属性。见下文。

from selenium import webdriver
browser = webdriver.Firefox()
browser.get(raw_input("Enter URL: "))
html_source = browser.page_source
if "whatever" in html_source:
    # do something
else:
    # do something else

答案 1 :(得分:5)

使用Selenium2Library,您可以使用get_source()

import Selenium2Library
s = Selenium2Library.Selenium2Library()
s.open_browser("localhost:7080", "firefox")
source = s.get_source()

答案 2 :(得分:3)

driver.page_source 将帮助您获取页面源代码。您可以检查页面源中是否存在文本。

from selenium import webdriver
driver = webdriver.Firefox()
driver.get("some url")
if "your text here" in driver.page_source:
    print('Found it!')
else:
    print('Did not find it.')

如果要将页面源存储在变量中,请在 driver.get 之后添加以下行:

var_pgsource=driver.page_source

,并将 if 条件更改为:

if "your text here" in var_pgsource:

答案 3 :(得分:2)

通过使用页面源,您将获得整个HTML代码 因此,首先要确定需要检索数据或单击元素的代码块或标记。

options = driver.find_elements_by_name_("XXX")
for option in options:
    if option.text == "XXXXXX":
        print(option.text)
        option.click()

您可以按名称,XPath,ID,链接和CSS路径找到元素。

答案 4 :(得分:2)

from bs4 import BeautifulSoup
from selenium import webdriver

driver = webdriver.Chrome()
html_source_code = driver.execute_script("return document.body.innerHTML;")
html_soup: BeautifulSoup = BeautifulSoup(html_source_code, 'html.parser')

现在您可以应用BeautifulSoup函数提取数据...

答案 5 :(得分:1)

要回答有关获取用于urllib的URL的问题,请执行以下JavaScript代码:

url = browser.execute_script("return window.location;")

答案 6 :(得分:0)

您可以简单地使用WebDriver对象,并通过其@property字段page_source访问页面源代码...

尝试此代码段:-)

from selenium import webdriver
driver = webdriver.Firefox('path/to/executable')
driver.get('https://some-domain.com')
source = driver.page_source
if 'stuff' in source:
    print('found...')
else:
    print('not in source...')

答案 7 :(得分:-5)

我建议使用urllib获取源代码,如果要解析,请使用Beautiful Soup之类的内容。

import urllib

url = urllib.urlopen("http://example.com") # Open the URL.
content = url.readlines() # Read the source and save it to a variable.