【问题标题】:Manipulating the html source-code of a third party website using python使用python操作第三方网站的html源代码
【发布时间】:2015-12-19 18:29:55
【问题描述】:
当我检查网站的元素时(谷歌提醒:https://www.google.com/alerts),我输入一个名称并按“更多选项”。当我检查此页面的元素以查找“频率”等按钮之一时,我注意到在 HTML 源代码中:
<div class="goog-inline-block goog-flat-menu-button-caption" id=":3" role="option" aria-setsize="3" aria-posinset="2">At most once a day</div>
如果我手动将“每天最多一次”编辑为另一个选项的确切文本(通过我的检查器)(例如,我输入:“最多每周一次”,它实际上会在网站上创建更改。因此,我很好奇python中是否有一种方法(可能是通过selenium或beautiful soup)来实际编辑第三方网站的html代码来创建这些类型的更改?如果没有,我正在努力寻找一种方法来使用 selenium 更改此下拉按钮选择,如果有任何见解,将不胜感激。
谢谢!
【问题讨论】:
标签:
python
html
selenium
selenium-webdriver
inspector
【解决方案1】:
您可以编辑页面的 HTML,但这不是您想要做的。您实际上会更改选择的标签,但不会更改行为。可以把它想象成将男士浴室的标志改为“女士”。它不会把那间浴室改成女性浴室,只是让走进去的女性感到非常困惑...... :)
您要做的是选择页面上的特定选项。要使场景正常工作,您需要执行用户在脚本中执行的操作。要更改该下拉列表(它不是真正的 SELECT 下拉列表,它只是看起来和行为就像一个),您需要单击它,然后单击所需的元素。两次点击的那些元素都有 ID,因此您应该能够轻松地点击它们。
【解决方案2】:
有 Google 警报 API Python 客户端 - galerts。不知道它是否仍然有效,因为它已经 4 岁了。
或者,您可以使用浏览器自动化方法并通过使用selenium 控制它的浏览器进行更改。对于这个特定的下拉菜单,找到它并单击具有At most once a week 文本的元素:
dropdown = driver.find_element_by_css_selector("div.frequency_select")
dropdown.click()
once_a_week = driver.find_element_by_xpath("//*[. = 'At most once a week']")
once_a_week.click()