这是一个相当高水平的问题。
我开发了许多在不同网站上均可使用的网页抓取工具。

我有许多不同版本的函数,分别名为getName()和getAddress()。

在模块功能中执行此操作是否是pythonic /可怕的编码实践?如果这样做不好,有人可以给我一个有关如何管理这种刮板库的高级提示吗?

def universalNameAdressGrab(url):
   page = pullPage(url)
   if 'Tucson.com' in url:
       import tucsonScraper
       name = getName(page)     #this is the getName for Tucson
       address = getAddress(page)
   elif 'NewYork.com' in url:
       import newyorkScraper
       name = getName(page)   #this is the getName for NewYork
       address = getAddress(page)
   return {'name':name, 'address':address}

最佳答案

将所有内容导入文件顶部可能更像pythonic。之后,您可以按模块引用功能,并删除大量重复的代码。您可能会遇到URL大写的问题,因此我也将其标准化。您可以使用urlparse。我会考虑以下类似的pythonic:

import tucsonScraper
import newyorkScraper

def universalNameAdressGrab(url):
    page = pullPage(url)
    scraper = None

    if 'Tucson.com' in url:
        scraper = tucsonScraper
    elif 'NewYork.com' in url:
        scraper = newyorkScraper
    else:
        raise Exception("No scraper found for url")

    return {'name': scraper.getName(page), 'address': scraper.getAddress(page)}

关于python - 在开发Web刮板模块上做出pythonic决策,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31520728/

10-09 02:00