Python请求花费比预期更长的时间

时间:2020-05-26 17:20:50

标签: python python-requests

我正在尝试从返回JSON文件的URL抓取。

该页面在我的浏览器中加载的时间不到一秒钟,但是使用请求大约需要10秒钟。关于为何需要那么长时间以及如何更改它的任何建议?

import requests
from bs4 import BeautifulSoup
import json
import pandas as pd

URL = 'https://www.lowes.com/IntegrationServices/resources/storeLocator/json/v2_0/stores?langId=-1&storeId=10702&catalogId=10051&place=10001&count=25'

headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36"}
page = requests.get(URL, headers=headers )
soup = BeautifulSoup(page.content, 'html.parser')
site_json = json.loads(soup.text)


df = pd.DataFrame.from_dict(site_json)

first_row = pd.Series(df.iloc[0]['Location'])

print(first_row)

(我也知道,当将其转换为数据库时,我可能会做一些额外的步骤,我习惯于从HTML抓取……这仍然有效)

1 个答案:

答案 0 :(得分:1)

对我来说,更改用户代理似乎可以解决此问题,例如:

headers = {
    "User-Agent": "Mozilla/5.0 (X11; CrOS x86_64 12871.102.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.141 Safari/537.36"
}

问题可能与Lowes的API服务器拒绝或延迟对无法识别/不常见的用户代理的响应有关。 here可以找到当前Chrome用户代理值的列表。