【问题标题】:Scraping a webpage for state name抓取网页以获取州名
【发布时间】:2014-04-24 20:01:21
【问题描述】:

我正在做一个小项目,它会在一组网页中搜索一些 PII。特别是,我在正确抓取页面以提取此人居住的州时遇到了一些困难。造成严重破坏的具体示例是印第安纳州。我的正则表达式搜索每个页面以查找完整的州名或州缩写。在这种情况下,由于 Indiana 的缩写是 IN,因此返回了很多误报。所以我的不区分大小写的搜索实际上是返回每个网页,因为“in”是一个很常见的词。有什么聪明的正则表达式或其他技术可以用来消除这个问题吗?我可以尝试通过查找逗号后跟缩写来匹配状态,但有时网页不包含逗号(即',IN')。有什么想法吗?

这是我的正则表达式仅供参考。它查找状态全名和该状态的缩写,由函数调用返回的键值对返回:

re.search(r'\b{0}\b|\b{1}\b'.format(state.strip(), stateDictionaryLookup(state.strip())), webpage, re.IGNORECASE)

【问题讨论】:

  • 仅供参考,它的拼写是Indiana,以防万一你被扔了......
  • 抱歉,这里没有拼写检查。
  • 为什么您使用不区分大小写的搜索,因为缩写不在 IN 中?那会有帮助吗。还有其他可以锚定的东西吗?例如邮政编码?

标签: python regex web-scraping


【解决方案1】:

据我所知,没有完美的方法可以轻松做到这一点。您应该做什么取决于您想要的误报与误报的比率。

以下几点可能会有所帮助:

  • 州缩写 IN 之前或之后是 ,;.,而不是单词 in。
  • in 这个词几乎从来没有出现在 之后,然后是 ,;.,而在 , 之前和之后都可以找到缩写词。 、;.
  • in 这个词很少写成 IN,但缩写 IN 几乎总是大写。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-16
    • 1970-01-01
    相关资源
    最近更新 更多