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解析网页?
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()
关键点说明:
- 定位元素:优先用CSS选择器,性能好且易读;XPath适合复杂定位
- 等待机制:必须用显式等待(WebDriverWait),避免硬性等待
- 元素查找:单个用
find_element,多个用find_elements - 内容获取:
.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 没有

