【问题标题】:scraping data from a web page with python requests使用 python 请求从网页中抓取数据
【发布时间】:2020-07-06 16:26:16
【问题描述】:

我正在尝试抓取域搜索页面(您可以在其中输入关键字并获得一些随机结果)和 我在网络选项卡https://api.leandomainsearch.com/search?query=computer&count=all(关键字:计算机)中找到了这个 api url,但是我收到了这个错误

{'error': True, 'message': 'Invalid API Credentials'}

这里是代码

import requests

r = requests.get("https://api.leandomainsearch.com/search?query=cmputer&count=all")
print(r.json())

【问题讨论】:

  • 您需要有凭据才能访问该 API 端点。它不公开。
  • 我在请求标头中找到了密钥,您是这个意思吗? @RahulAgrawal

标签: python python-3.x web-scraping python-requests


【解决方案1】:

站点需要您设置AuthorizationReferer HTTP 标头。

例如:

import re
import json
import requests


kw = 'computer'

url = 'https://leandomainsearch.com/search/'
api_url = 'https://api.leandomainsearch.com/search'

api_key = re.search(r'"apiKey":"(.*?)"', requests.get(url, params={'q': kw}).text)[1]
headers = {'Authorization': 'Key ' + api_key, 'Referer': 'https://leandomainsearch.com/search/?q={}'.format(kw)}
data = requests.get(api_url, params={'query': kw, 'count': 'all'}, headers=headers).json()

# uncomment this to print all data:
# print(json.dumps(data, indent=4))

for d in data['domains']:
    print(d['name'])

print()
print('Total:', data['_meta']['total_records'])

打印:

...

blackopscomputer.com
allegiancecomputer.com
northpolecomputer.com
monumentalcomputer.com
fissioncomputer.com
hedgehogcomputer.com
blackwellcomputer.com
reflectionscomputer.com
towerscomputer.com
offgridcomputer.com
redefinecomputer.com
quantumleapcomputer.com

Total: 1727

【讨论】:

  • 干得好!十分感谢。我只使用了 api 密钥,没有使用 Referer
猜你喜欢
  • 1970-01-01
  • 2022-01-18
  • 2019-07-27
  • 2018-03-22
  • 2016-02-21
  • 2015-06-24
  • 2020-04-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多