如何使用带有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源代码。
答案 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.