做一个关于开发网页刮板modu的pythonic决策

2024-09-29 23:15:37 发布

您现在位置:Python中文网/ 问答频道 /正文

这是一个相当高层次的问题。 我已经开发了许多不同的网络刮板,在不同的网站工作。你知道吗

我有许多不同版本的函数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}

Tags: thenameinimportcomurlforis
1条回答
网友
1楼 · 发布于 2024-09-29 23:15:37

导入文件顶部的所有内容可能更像python。之后,您可以按模块引用函数并删除大量重复的代码。你可能会遇到URL大写的问题,所以我也会将其标准化。你可以用urlparse来做这个。我会考虑以下更具Python风格的东西:

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)}

相关问题 更多 >

    热门问题