对于webcrawler,使用pandas.series.apply()是否足够?

2024-04-28 22:45:58 发布

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

我将数据集从https://www.usgbc.org/projects/list?page=17&keys=Mexico导入python

此数据集包含具有LEED认证的建筑(提供的链接专门过滤来自墨西哥的建筑)

每一行都包含一个url,其中包含有关每个建筑的详细信息。我有兴趣通过网络扫描每个建筑的url来获取邮政编码

我已经有了一个webcrawler来获取每页的数据:

def webcrawler(x):
    url = x
    try:
        page = requests.get('https://www.usgbc.org/projects/reforma-180')
        tree = html.fromstring(page.content)
    except:           # Regresa false si no logras entrar a la URL
        street = False
        locality = False
        postalcode = False
        country = False
        return

    # get data from tree. Return None if nothing is found 
    try:
        street = ''.join(tree.xpath('//span[@itemprop="streetAddress"]/text()'))
    except:
        street = None
    try:
        locality = tree.xpath('//span[@itemprop="addressLocality"]/text()')
    except:
        locality = None
    try:
        postalcode = tree.xpath('//span[@itemprop="postalCode"]/text()')
    except:
        postalcode = None
    try:
        country = tree.xpath('//span[@itemprop="addressCountry"]/text()')
    except:
        country = None

    return [street, locality, postalcode, country]

# Try it yourself
x = 'https://www.usgbc.org/projects/reforma-180'
y = webcrawler(x)

了解导入的数据集包含一个名为“Path”的列,其中包含指向每个建筑页面的链接,并且数据集长度为2390行,我的问题是:

使用df.Path.apply(webcrawler)是否足够

df.Path.apply(webcrawler)

我担心这会在很短的时间内向服务器发送大量请求,这可能是不道德的,或者被解释为对服务器的攻击

我能听听你的意见吗


Tags: 数据nonefalsetreestreetcountryxpathspan