【问题标题】:Web Scraping with Python: Iinput text and click a button使用 Python 进行网页抓取:输入文本并单击按钮
【发布时间】:2017-06-21 18:37:23
【问题描述】:

我正在使用 python(Linkedin 网站)进行一些网页抓取,但遇到以下 2 个问题:1)如何在搜索栏上输入文本? 2) 如何点击一个按钮?首先,这是搜索条码:

<input aria-autocomplete="list" autocomplete="off" spellcheck="false" 
placeholder="Búsqueda" autocorrect="off" autocapitalize="off" id="a11y-
ember6214" role="combobox" class="ember-text-field ember-view" aria-
expanded="false">

要输入我使用 xpath 的文本(它有效),但每次我登录网站时它都会改变:

search = driver.find_element_by_xpath('//*[@id="a11y-ember997"]')
search.send_keys('MedMake')

那么我可以使用上面输入条码的一部分来代替我多次重新运行我的脚本吗?

我的第二点是 2) 如何单击按钮。我再次使用 xpath,但每次登录后它都会改变。我的代码是:

button = driver.find_element_by_xpath('//*[@id="nav-search-controls-wormhole"]/button')
button.click()

我检查了按钮代码,我想使用 data-vertical="PEOPLE" 或任何其他此类独特字段(标签按钮是不够的,因为 Linkedin 网站上有很多按钮)。顺便问一下,所有这些内部字段是如何命名的?我相信我的部分问题源于缺乏对 html 代码的理解。

<button data-vertical="PEOPLE" data-control-
name="vertical_nav_people_toggle" data-ember-action="" data-ember-
action-8620="8620" data-is-animating-click="true">
Gente
</button>

【问题讨论】:

    标签: python html xpath web-scraping selenium-chromedriver


    【解决方案1】:

    如果id 属性值是动态的,您可以使用其他具有静态值的属性:

    search = driver.find_element_by_xpath('//input[@placeholder="Búsqueda"]')
    search.send_keys('MedMake')
    button = driver.find_element_by_xpath('//button[normalize-space()="Gente"]')
    button.click()
    

    【讨论】:

      【解决方案2】:

      第一个使用xpath

      //input[contains(@class,'ember-text-field')]
      

      第二个使用xpath

      //button[@class='vertical_nav_people_toggle']
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-08-12
        • 2017-05-10
        • 2019-04-06
        • 1970-01-01
        • 2021-06-19
        • 1970-01-01
        • 2017-02-15
        • 1970-01-01
        相关资源
        最近更新 更多