我将https://www.usgbc.org/projects/list?page=17&keys=Mexico中的数据集导入python-Pandas
此数据集包含具有LEED认证的建筑物(提供的链接专门过滤来自墨西哥的建筑物)
每一行都包含一个网址,其中包含每个建筑的详细信息。我有兴趣浏览每个建筑物的网址以获取邮政编码。
我已经有了一个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)
我担心这会在很短的时间内向服务器发送大量请求,这可能是不道德的,也可能被解释为对服务器的攻击。</ p>
我可以就此发表意见吗?
答案 0 :(得分:-1)
在您的导入中加入from time import sleep
并添加sleep(0.5)
左右,以便在请求之间休眠半秒钟。