自动化抓取 stackoverflow 问题列表

2022-09-03 21:50:15 +08:00
 automation2022

看论坛有人推荐这个 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()
 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 。

2385 次点击
所在节点    Python
10 条回复
masker
2022-09-03 21:52:40 +08:00
然后用 Google translate 翻译一下,做成内容农场?
automation2022
2022-09-03 21:55:26 +08:00
@masker 主要是自己使用, 节省自己时间, 之前还做过一个自动把订阅的专栏文章转成 pdf 推送到 kindle 上来阅读,也有点意思。
BeautifulSoap
2022-09-03 22:39:45 +08:00
嗯。。。。。。这项目拿来练手可以,但问题在于对 stackoverflow 来说这么费劲真的没有必要

因为 stackoverflow 每三个月定期提供全站的数据备份下载。如果要新数据还提供 api 给你来用,根本没有这么大费周章搞爬虫的必要

https://api.stackexchange.com/docs
ClericPy
2022-09-03 23:14:45 +08:00
clicknium

之前扫了眼 Github 没看到源码... 这个开源么, 不开源不太敢用, 倒是把比较常见的东西都综合到一块了
wxf666
2022-09-03 23:18:41 +08:00
@BeautifulSoap 哇,第一次知道 StackOverflow 居然提供全站数据下载。。好开放啊

@Nillouise 有现成的大型数据库你可以用了
automation2022
2022-09-03 23:19:54 +08:00
@BeautifulSoap 嗯,练练手,评估一下是否好用,将来有其他项目上的需求可以多个选择。
感谢回复,能用 API 解决的肯定是比页面操作要稳定和快速的, 实际自动化项目上经常会遇到中间卡壳环节,没有 API 可用的情况。
0o0O0o0O0o
2022-09-03 23:24:10 +08:00
fpure
2022-09-03 23:45:13 +08:00
@masker 还要微信扫码关注获取验证码才能看🤣
Nillouise
2022-09-04 10:48:19 +08:00
@wxf666 多谢,我可以直接拿来玩玩了
automation2022
2022-09-26 14:38:08 +08:00
@ClericPy 邮件问了,官方回复是在 roadmap 里面,包括跨平台,预计会在未来的几个月里面做

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/877526

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX