【问题标题】:curl, sed // Anybody know better way to pull info from web and process?curl, sed // 有人知道从网络中提取信息并进行处理的更好方法吗?
【发布时间】:2012-03-31 04:27:43
【问题描述】:

我想了解专利代理人和专利代理人在美国专利商标局注册的比率。美国专利商标局提供了律师和代理人数据的 .zip 文件,但奇怪的是,在 .zip 文件中没有提供注册日期。这些日期仅在 USPTO 的网站上以每位律师或代理人的名义提供。

为了下拉日期,我使用了以下内容:

curl -q https://oedci.uspto.gov/OEDCI/details.do?regisNum=[25560-69398:500] | sed -e 's/<[^>]*>//g' | sed -n -e '/Registered/,/nbsp/p' -e '/Registration/,/nbsp/p' | sed -e 's/&nbsp;//g' > dates.txt

我只需要这么多数据来确定趋势,所以我选择为每 500 名律师/代理人提取注册日期。

我最终得到了一个文件,其中包含的信息比我需要的多一些(例如,我不需要标题,只需要注册号和日期),但该文件足够小,可以手动编辑和随后绘图。

问题:有没有更好和/或更简单的方法来完成我在这里的目标?例如,不手动编辑任何内容,直接生成列数据进行绘图,这将是非常好的。

注意事项:
1) 有些律师有两个注册日期,一个是他们注册为代理人的日期,一个是他们注册为律师的日期。我只需要第一次约会,而我不得不手动编辑第二次约会。
2) 有些注册号不存在。在我的数据集中,使用上面的命令,如果注册号不存在,则跳过它。

谢谢!

【问题讨论】:

  • 肯定有很多方法,但我会用你最喜欢的语言编写脚本(perl 非常适合这种类型的工作)
  • 这些是一些非常重要的警告。考虑重新构想您的流程并将数据存储到开源数据库中。即使您可以使用有限的工具来解决这个问题,那么您发送的信息是“我总是可以快速而肮脏地完成它”,但随后您被分配了一个数据库中的 Q&D 项目,但是,令人惊讶的是,你最终不得不使用 sed/awk/perl 来实现一个数据库。如果你确定它永远不会超过这个,那么继续寻找。否则可能是时候重新考虑你的方法了。无论如何,祝你好运!
  • 你的意思是安静/沉默? -q 用于 wget-s 代表curl
  • 当然,在理想情况下,该站点将提供官方的、有文档的、免费的 JSON 提要,而不是一个愚蠢的 zip 文件。抓取永远不会是可靠、稳健或可持续的。

标签: linux curl sed web web-scraping


【解决方案1】:

curl(或类似工具)和正则表达式可能会让您获得快速而肮脏的解决方案,但您现在知道它们不适合繁重的东西。

您需要的是一个抓取工具,它将帮助您自动化处理网页的所有步骤;或者至少是一个成熟的 html 解析器,以可靠地从(希望结构合理的)页面数据中提取信息。几乎每种流行语言都有很多,因此答案实际上取决于您更喜欢哪种语言。例如,如果您使用 Python,scrapy 是一个众所周知的完整爬虫解决方案。 bs4 有一个很好的接口来处理数据提取。

【讨论】:

    【解决方案2】:

    如果你可以运行 python 代码,那么我强烈推荐使用Beautiful Soup

    【讨论】:

      【解决方案3】:

      如果您可以运行 Python,请查看html5lib

      【讨论】:

        猜你喜欢
        • 2011-10-11
        • 1970-01-01
        • 2013-05-15
        • 2019-05-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多