Python中如何使用Selenium解析网页?

from selenium import webdriver 
from selenium.webdriver.remote.webelement import WebElement   

h=’’’ <div class=“page”><small>下一页</small></div> ‘’’

driver =webdriver.Chrome() driver.get(h)

#操作 1:读取 h 中的 small 标签,并显示其文本内容,期望的输出是:‘下一页’
s=driver.find_element_by_xpath("//div[@class=‘page’]//small") #语句 1 print(“s=”,s.get_attribute(‘text’))

#操作 2:定位 h 中文本内容为’下一页’的元素,期望定位到的元素应当是 small 标签。然后显示其文本内容,期望的输出是:‘下一页’
pg=driver.find_element_by_xpath("//div[@page]//small[contains(text(),‘下一页’)]") #语句 2 print(“pg=”,pg.get_attribute(‘text’))

上面的代码是用 selenium 来解析文本 h, 进行了两个操作,操作的目的如代码中的注释所示,但是两个操作都报错了,提示找不到元素。我的问题如下: 1、目前的代码是用 xpath 来解析,请问怎么写才是正确的? 2、我尝试不用 xpath,修改如下: 语句 1 修改为用 css 选择器 s=driver.find_element_by_css_selector(‘div.page>small’) 语句 2 修改为 driver.find_element_by_link_text(‘下一页’) 做了上述修改后还是一样找不到元素。恳请大家指点如果不用 xpath,例如用 css 选择器应该怎么写语句呢?

恳请指点,感谢!


Python中如何使用Selenium解析网页?

13 回复

driver.get(h) 这句话看不懂。driver.get() 这个方法传的参数不应该是一个 URL 吗?


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

# 1. 启动浏览器驱动
driver = webdriver.Chrome()  # 需要提前安装ChromeDriver

# 2. 访问目标网页
driver.get("https://example.com")

# 3. 等待页面加载完成(显式等待)
wait = WebDriverWait(driver, 10)

# 4. 解析元素的几种常用方法:
# a) 通过ID查找
element_by_id = driver.find_element(By.ID, "element_id")

# b) 通过CSS选择器查找(最常用)
element_by_css = driver.find_element(By.CSS_SELECTOR, ".class_name")

# c) 通过XPath查找
element_by_xpath = driver.find_element(By.XPATH, "//div[@class='content']")

# d) 等待元素出现后再解析
element = wait.until(
    EC.presence_of_element_located((By.CSS_SELECTOR, ".dynamic-content"))
)

# 5. 获取元素内容
text_content = element.text  # 获取文本
attribute_value = element.get_attribute("href")  # 获取属性
html_content = element.get_attribute("outerHTML")  # 获取完整HTML

# 6. 解析多个元素
all_links = driver.find_elements(By.TAG_NAME, "a")  # 注意是find_elements
for link in all_links:
    print(link.get_attribute("href"))

# 7. 关闭浏览器
driver.quit()

关键点说明:

  1. 定位元素:优先用CSS选择器,性能好且易读;XPath适合复杂定位
  2. 等待机制:必须用显式等待(WebDriverWait),避免硬性等待
  3. 元素查找:单个用find_element,多个用find_elements
  4. 内容获取.text获取可见文本,.get_attribute()获取属性值

简单总结: 用CSS选择器定位元素,配合显式等待确保页面加载完成。

是我搞错了,我的本意不是要测试某个网址,我只是希望对某一段 HTML 语法的解析进行分析,所以才用文档字符串来保存待分析的内容,我并不想传入整个 URL 作为参数,这样该怎么办呢

python -m SimpleHTTPServer … driver.get(“http://127.0.0.1/test.html”)

只想分析 html,用 beautifulsoup 吧

pyquery 在呼唤你

把 target_url 写出来,正确答案马上就有了

同意 4 楼,只是分析 HTML 的话推荐用 BeautifulSoup

请问这是什么包里的模块? 我用 SimpleHTTPServer 关键字在 pypi 上没找到这个包呢,谢谢了

python2 内置

pyquery +1

谢谢,我是 PYTHON3,我试试看有没有

python3 没有

回到顶部