首页 > 编程问答 >无法刮擦

无法刮擦

时间:2024-07-27 16:30:40浏览次数:5  
标签:python html web-scraping beautifulsoup

enter image description here

我正在尝试从angellist获取公司列表 https://angel.co/companies

我尝试使用此代码

from bs4 import BeautifulSoup
import urllib2

headers = { 'User-Agent' : 'Mozilla/5.0' }
req = urllib2.Request('https://angel.co/companies', None, headers)
html = urllib2.urlopen(req).read()
soup = BeautifulSoup(html, "html.parser")
p1 = soup.find_all('div' , {"class"," dc59 frw44 _a _jm"})
print p1

但这返回一个空字符串。

我经历过类似的事情问题,有人说更新beautifulsoup,有人说更改解析器。没有什么对我有用。


无法使用 BeautifulSoup 来获取数据的原因是因为 AngelList 网站使用 JavaScript 动态加载内容。 BeautifulSoup 仅解析网页的初始 HTML 源代码,而此源代码中没有要查找的公司列表。

为了从 AngelList 中提取公司数据,需要使用一个能够渲染 JavaScript 并执行网络请求的工具,例如:

1. 使用基于浏览器的库:

  • Selenium/Playwright: 这些库允许控制一个真实的浏览器,例如 Chrome 或 Firefox,从而完全加载和呈现 JavaScript 内容。可以模拟用户交互,例如滚动和点击,以加载更多数据。
  • Requests-HTML: 这个库建立在 Requests 库之上,并提供了渲染 JavaScript 的功能。

2. 使用 AngelList API:

AngelList 可能提供了一个官方 API,可以使用它来访问公司数据。使用 API 是一种更结构化和可靠的数据提取方法,但需要查阅 AngelList 的文档以了解可用的端点和身份验证要求。

以下是一个使用 Requests-HTML 从 AngelList 获取公司数据的示例:

from requests_html import HTMLSession

session = HTMLSession()
url = 'https://angel.co/companies'

response = session.get(url)
response.html.render(sleep=5)  # 等待 JavaScript 渲染完成

companies = response.html.find('div.dc59.frw44._a._jm', containing='company')

for company in companies:
    name = company.find('a.startup-link', first=True).text
    # ... 提取其他公司信息 ...
    print(name) 

注意:

  • 可能需要安装 requests_html : pip install requests-html
  • 使用 sleep 参数等待页面加载完成,可以根据实际情况调整等待时间。
  • 需要根据网站的 HTML 结构修改代码以提取其他公司信息。

建议查看 AngelList 的服务条款,以确保的抓取行为符合其规定。

标签:python,html,web-scraping,beautifulsoup
From: 37269187

相关文章

  • Python 与 Visual Studio Professional 2022(64 位)- 预览版本 5.0 交互窗口挂起
    我正在MicrosoftVisualStudioProfessional2022(64位)-预览版17.11.0预览版5.0上运行Python开发工作负载。我正在关注VisualStudio中的Python教程https://learn.microsoft.com/en-us/visualstudio/python/tutorial-working-with-python-in-visual-studio-st......
  • Python面试宝典第19题:最小路径和
    题目        给定一个包含非负整数的mxn网格grid,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。        示例1:输入:grid=[[1,3,1],[1,5,1],[4,2,1]]输出:7解释:因为路径1→3→1→1→1的总......
  • 基于python的出租车管理网站的设计与实现【源码+文档+PPT】
    ......
  • 如何在Linux上的python中以后台模式打开程序?
    我需要在Linux上以后台模式使用python打开另一个程序。我尝试过subprocess.call("yourcommand")但它不是后台模式。并且os.startfile("file")在Linux上不起作用。请帮助我。可以使用Python的subprocess模块在Linux上以后台模......
  • 【学习笔记】Matlab和python双语言的学习(TOPSIS法)
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、TOPSIS法1.模型原理2.基本步骤(1)原始矩阵正向化(2)正向矩阵标准化(3)计算得分并归一化二、代码实现----Matlab1.主程序2.正向化处理函数3.极小型正向化函数4.中间型正向化函数5.区间型正向化......
  • 基于Python flask 的豆瓣电影top250数据评分可视化
    跟着CSDN上学习一下爬虫和简单的可视化分析,最后完成了一个简单的小项目。1.项目简介        基于Pythonflask的豆瓣电影评分可视化。通过采用Python编程语言,使用flask框架搭建影视系统,并使用相关技术实现对豆瓣网站的爬取、数据存储和可视化分析。2、成果展示:......
  • 获取 Python Decimal 的精确十进制字符串表示形式?
    如果我有一个PythonDecimal,我怎样才能可靠地获得数字的精确十进制字符串(即不是科学记数法)表示而不带尾随零?例如,如果我有:>>>d=Decimal('1e-14')我会像:>>>get_decimal_string(d)'0.00000000000001'但是:Decimal类没有任何to_......
  • python datetime timedelta 对于没有小数部分的时间返回 0.0
    我正在使用datetime.timedelta来获取python中进程的持续时间。defget_time_difference(start_time,end_time):time_in_seconds=(end_time-start_time)returnstr(datetime.timedelta(seconds=time_in_seconds))[:-3]文档指出“所有参数都是可选的......
  • 如何运行从我正在编写的另一个 Python 脚本获取命令行参数的 Python 脚本?
    我有一个python3脚本,如下所示:...defmain():parser=argparse.ArgumentParser(description='Performnormalisationchecksonpass2files')parser.add_argument('-p','--parser',action='store',help='parse......
  • 03HTML+CSS
    跟着视频完成第二天的综合案例,分别为新闻界面和注册案例新闻界面代码1<!DOCTYPEhtml>2<htmllang="en">3<head>4<metacharset="UTF-8">5<metaname="viewport"content="width=device-width,initial-scale=1.0&qu......