【问题标题】:Web Scraping of crunchbase data using python使用 python 对 crunchbase 数据进行 Web 抓取
【发布时间】:2018-04-18 09:01:56
【问题描述】:

代码:

import requests

response= requests.get("https://www.crunchbase.com/search/people/field/organizations/num_employees_enum/anheuser-busch")

response.raise_for_status()

webFile =open('myFile.txt', 'wb')

for chunk in res.iter_content(10000):
    webFile.write(chunk)
    webFile.close()

我发现以下错误:

requests.exceptions.HTTPError: 416 Client Error: Requested Range Not 可满足 url: https://www.crunchbase.com/search/people/field/organizations/num_employees_enum/anheuser-busch

【问题讨论】:

  • 不知道这是否能解决您当前的问题,但请更改:。 res.iter_content 到 response.iter_content
  • 仍然错误是一样的

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


【解决方案1】:

如果您删除response.raise_for_status() 行,您将收到来自 crunchbase 的以下输出:

请原谅我们的打扰...

当您浏览 www.crunchbase.com 时,您的浏览器的某些内容让我们认为您是机器人。发生这种情况的原因有几个:

  • 您是一名超级用户,以超人的速度浏览此网站。
  • 您已在网络浏览器中禁用 JavaScript。
  • Ghostery 或 NoScript 等第三方浏览器插件阻止 JavaScript 运行。此支持文章中提供了更多信息。

事实上,你是一个机器人,而不是 Python 请求,你应该尝试使用它们自己的 API。

编辑

要使用 crunchbase API,您需要在这里注册:https://about.crunchbase.com/solutions/ 免费的基本访问许可证应该足以根据文档访问组织。

注册后,您将拥有一个用户 API 密钥,然后您可以按如下方式提出请求:

https://api.crunchbase.com/v3.1/organizations?user_key=[user_key]

相当于您使用 API 进行的查询将是这样的:

import json,requests

url = "https://api.crunchbase.com/v3.1/organizations/anheuser-busch"

params = dict(user_key="your_key")

resp = requests.get(url=url, params=params)
data = json.loads(resp.text)

webFile = open('myFile.txt', 'w')

for organization in data:
    webFile.write(organization["num_employees_max"])

webFile.close()

我自己还没有测试过,但它应该能让你继续前进。

这是可供组织使用的所有数据:https://data.crunchbase.com/docs/organization

这里是开始使用 API 的参考:https://data.crunchbase.com/docs/using-the-api

【讨论】:

  • 从 bs4 导入请求 import BeautifulSoup import pandas as pd url= 'crunchbase.com/search/people/field/organizations/…' response = requests.get(url) html =response.content soup=BeautifulSoup(html, "html.parser") for div in soup.find_all("div", class_="grid-cell layout-row layout-align-start-center row-10 col-5"): print(div.text) 这也行不通
  • 为什么不用API?
  • 我用一个例子更新了我的答案,因为我现在没有密钥,所以无法测试它,但我希望它会有所帮助。
  • 不,我也没有钥匙,
  • API 访问似乎仅限于企业帐户:about.crunchbase.com/products/pricing 我想自从您上次检查以来这已经改变了?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-02-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-23
  • 1970-01-01
相关资源
最近更新 更多