【问题标题】:Retrieving all feature questions on Stack Overflow检索 Stack Overflow 上的所有功能问题
【发布时间】:2015-06-01 16:01:57
【问题描述】:

我正在尝试编写一个程序来检索在特定标签中具有活动赏金的问题的所有链接。我还没有实现特定的标签功能,因为我只是尝试获取所有链接。

from re import findall
from urllib.request import urlopen


def fetch_source(url):
     return str(urlopen(url).read())


site = 'http://stackoverflow.com/?tab=featured'


def fetch_links(source):
    source = fetch_source(source)
    return findall("\/questions\/[0-9]*\/(?:[A-z]|\-)+", source)


print(fetch_links(site))

这将获取许多链接,但它会丢失很多链接,因为我的正则表达式只允许标题中的[A-z]|\-。我不确定如何解决这个问题,因为有些问题的标题中有引号,如果我允许这些,我将不知道问题链接何时结束?

我很抱歉刚接触 python,但我只是想弄清楚一些事情。

【问题讨论】:

  • 您不应该使用 re.findall 检索链接。请查看 Stack Exchange API。
  • 仅供参考 [A-z] 相当于 [A-Z\[\\\]^_`a-z]

标签: python regex python-2.7


【解决方案1】:

使用正则表达式来获取特定标签的问题将变得完全不可行。

您的正则表达式缺少很多标题是正确的,但在这种情况下使用 findall 确实不合适。 Beautiful soup,是一个更好的检索链接的工具,我建议你研究一下。

不过,在这种情况下,Stack Exchange API 已为您提供服务。

对于类似的问题,只需通过 API documentation 搜索(或 Google),直到看到您正在寻找的功能,在您的情况下为 featured question

输入你想要的参数,API会显示生成链接:

https://api.stackexchange.com/2.2/questions/featured?order=desc&sort=votes&tagged=python&site=stackoverflow

检索所有 Python 特征问题的示例

【讨论】:

    猜你喜欢
    • 2010-10-30
    • 2010-09-16
    • 2011-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-20
    • 1970-01-01
    相关资源
    最近更新 更多