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