gpt4 book ai didi

python - 做出开发网络抓取模块的Python式决定

转载 作者:太空宇宙 更新时间:2023-11-03 17:33:38 25 4
gpt4 key购买 nike

这是一个相当高级的问题。我开发了许多不同的网络抓取工具,可以在不同的网站上使用。

我有许多不同版本的名为 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 - 做出开发网络抓取模块的Python式决定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31520728/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com