这是一个相当高水平的问题。
我开发了许多在不同网站上均可使用的网页抓取工具。
我有许多不同版本的函数,分别名为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/