V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
saximi
V2EX  ›  Python

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

  •  
  •   saximi · Sep 28, 2017 · 3917 views
    This topic created in 3138 days ago, the information mentioned may be changed or developed.
    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 选择器应该怎么写语句呢? 
    
    恳请指点,感谢! 
    
    
    13 replies    2017-10-01 10:14:02 +08:00
    OpenJerry
        1
    OpenJerry  
       Sep 28, 2017
    driver.get(h) 这句话看不懂。driver.get() 这个方法传的参数不应该是一个 URL 吗?
    saximi
        2
    saximi  
    OP
       Sep 29, 2017
    @OpenJerry 是我搞错了,我的本意不是要测试某个网址,我只是希望对某一段 HTML 语法的解析进行分析,所以才用文档字符串来保存待分析的内容,我并不想传入整个 URL 作为参数,这样该怎么办呢
    kqz901002
        3
    kqz901002  
       Sep 29, 2017
    @saximi python -m SimpleHTTPServer ... driver.get("http://127.0.0.1/test.html")
    cszeus
        4
    cszeus  
       Sep 29, 2017
    只想分析 html,用 beautifulsoup 吧
    mlyy
        5
    mlyy  
       Sep 29, 2017 via iPhone
    lxml 好像也可以
    justtery
        6
    justtery  
       Sep 29, 2017 via Android
    pyquery 在呼唤你
    Marsss
        7
    Marsss  
       Sep 29, 2017
    把 target_url 写出来,正确答案马上就有了
    OpenJerry
        8
    OpenJerry  
       Sep 29, 2017
    @saximi 同意 4 楼,只是分析 HTML 的话推荐用 BeautifulSoup
    saximi
        9
    saximi  
    OP
       Sep 29, 2017
    @kqz901002 请问这是什么包里的模块? 我用 SimpleHTTPServer 关键字在 pypi 上没找到这个包呢,谢谢了
    kqz901002
        10
    kqz901002  
       Sep 29, 2017
    @saximi python2 内置
    yucongo
        11
    yucongo  
       Sep 30, 2017
    pyquery +1
    saximi
        12
    saximi  
    OP
       Sep 30, 2017
    @kqz901002 谢谢,我是 PYTHON3,我试试看有没有
    kqz901002
        13
    kqz901002  
       Oct 1, 2017
    @saximi python3 没有
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   781 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 44ms · UTC 22:18 · PVG 06:18 · LAX 15:18 · JFK 18:18
    ♥ Do have faith in what you're doing.