请教关于用 selenium 解析网页的问题

2017-09-28 20:20:46 +08:00
 saximi
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 选择器应该怎么写语句呢? 

恳请指点,感谢! 

3359 次点击
所在节点    Python
13 条回复
OpenJerry
2017-09-28 21:54:15 +08:00
driver.get(h) 这句话看不懂。driver.get() 这个方法传的参数不应该是一个 URL 吗?
saximi
2017-09-29 00:05:56 +08:00
@OpenJerry 是我搞错了,我的本意不是要测试某个网址,我只是希望对某一段 HTML 语法的解析进行分析,所以才用文档字符串来保存待分析的内容,我并不想传入整个 URL 作为参数,这样该怎么办呢
kqz901002
2017-09-29 00:17:33 +08:00
@saximi python -m SimpleHTTPServer ... driver.get("http://127.0.0.1/test.html")
cszeus
2017-09-29 01:00:51 +08:00
只想分析 html,用 beautifulsoup 吧
mlyy
2017-09-29 04:15:20 +08:00
lxml 好像也可以
justtery
2017-09-29 08:33:34 +08:00
pyquery 在呼唤你
Marsss
2017-09-29 08:42:32 +08:00
把 target_url 写出来,正确答案马上就有了
OpenJerry
2017-09-29 14:16:55 +08:00
@saximi 同意 4 楼,只是分析 HTML 的话推荐用 BeautifulSoup
saximi
2017-09-29 23:09:42 +08:00
@kqz901002 请问这是什么包里的模块? 我用 SimpleHTTPServer 关键字在 pypi 上没找到这个包呢,谢谢了
kqz901002
2017-09-29 23:18:50 +08:00
@saximi python2 内置
yucongo
2017-09-30 00:16:14 +08:00
pyquery +1
saximi
2017-09-30 23:34:39 +08:00
@kqz901002 谢谢,我是 PYTHON3,我试试看有没有
kqz901002
2017-10-01 10:14:02 +08:00
@saximi python3 没有

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/394448

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX