看论坛有人推荐这个 python 自动化开发工具,觉得有点好玩,尝试一下。
最近在关注 stackoverflow 上的某一类问题, 所以想用程序帮我做监控,自动打开浏览器,搜索指定关键词,然后把前 30 个问题列表保存或者发给我。 源代码贡献到这个github了,以下是我的开发过程.
安装 clicknium vscode 扩展和 python module ,参照getting started.
tab = cc.edge.open("www.stackoverflow.com")
tab.find_element(locator.stackoverflow.text_q).set_text(word)
tab.find_element(locator.stackoverflow.text_q).send_hotkey('{ENTER}')
elem = tab.wait_appear(locator.stackoverflow.human_verification_div, wait_timeout=5)
if elem != None:
elem.click()
点击'Newest',根据时间来排序
利用 clicknium 的获取相似元素,获取每个问题的标题,vote 数量,内容,最后更新时间,以及问题的 url
while catch_count < 30:
sleep(1)
elems_title = tab.find_elements(locator.stackoverflow.a_title)
elems_vote = tab.find_elements(locator.stackoverflow.span_vote)
elems_content = tab.find_elements(locator.stackoverflow.div_content)
elems_time = tab.find_elements(locator.stackoverflow.span_time)
for i in range(len(elems_title)):
url = "https://www.stackoverflow.com" + elems_title[i].get_property('href')
item = {
'Keyword':word,
'Title': elems_title[i].get_text(),
'Content': elems_content[i].get_text(),
'Time': elems_time[i].get_text(),
'Vote': elems_vote[i].get_text(),
'Url':url}
print(item)
catch_count += 1
if tab.is_existing(locator.stackoverflow.a_next):
tab.find_element(locator.stackoverflow.a_next).click()
else:
break
以下是问题标题链接的 locator
点击'Validate'是可以验证能匹配到单页 15 个元素的, 通过find_elements1
可以一次性获取到所有的元素列表,然后通过get_text()
获取文本,针对链接,还可以通过get_property('href')
来获取属性 href 。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.