• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

自动化抓取stackoverflow问题列表

武飞扬头像
automation_rapper
帮助1

自动化抓取stackoverflow问题列表

最近在关注stackoverflow上的某一类问题, 所以想用程序帮我做监控,自动打开浏览器,搜索指定关键词,然后把前30个问题列表保存或者发给我。
源代码可以从github获取,以下是我的开发过程.

系统环境

安装clicknium vscode扩展和python module,参照getting started.

开发思路

  • 自动打开浏览器,返回tab对象
tab = cc.edge.open("www.stackoverflow.com")
  • 输入关键字,发送{ENTER}快捷键进行搜索
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。

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhfifjke
系列文章
更多 icon
同类精品
更多 icon
继续加载