python - 从网站抓取特定列时为空数据框
问题描述
我想尝试在 CNBC Nasdaq 100 网站特别是 Adobe 股票中抓取一些特定列(公司详细信息列),下面是我的代码片段
# Importing Libraries
from bs4 import BeautifulSoup
import requests
import csv
import pandas as pd
def get_company_info(url):
original_url = url
key = {}
l = []
page_response = requests.get(url, timeout=240)
page_content = BeautifulSoup(page_response.content, "html.parser")
name = page_content.find('div',{"class":"quote-section-header large-header"}).find("span",{"class":"symbol"}).text
description = page_content.find_all('div',{"class":"moduleBox"})
for items in description:
for i in range(len(items.find_all("tr"))-1):
# Gather data
key["stock_desc"] = items.find_all("td", {"class":"desc"})[i].find('div',attrs={'id':'descLong'}).text
shares = items.find_all("td").find("table",attrs={"id":"shares"})
for rest_of_items in shares:
for i in range(len(items.find_all("tr"))-1):
key["stock_outstanding-shares"] = items.find_all("td", {"class":"bold aRit"})[i].text
key["stock_ownership"] = items.find_all("td", {"class":"bold aRit"})[i].text
key["stock_market_cap"] = items.find_all("td", {"class":"bold aRit"})[i].text
key["stock_lastSplit"] = items.find_all("td", {"class":"bold aRit"})[i].text
# Print ("")
l.append(key)
key['name'] = name
df = pd.DataFrame(l)
print(df)
return key, df
get_company_info("https://www.cnbc.com/quotes/?symbol=ADBE&tab=profile")
解决方案
您要查找的信息在您请求的 url 中不可用。这是因为信息是由页面使用 JavaScript 获取的。这反过来又请求提供数据的不同 URL。
示例代码
from bs4 import BeautifulSoup
import requests
page=requests.get("https://apps.cnbc.com/view.asp?symbol=ADBE.O&uid=stocks/summary")
soup = BeautifulSoup(page.content, 'html.parser')
Name=soup.find("h5",id="companyName").text
stock_desc= soup.find("div",id="descLong").text
table=soup.find("table",id="shares")
details=table.find_all("td", class_="bold aRit")
stock_outstanding_shares= details[0].text
stock_ownership= details[1].text
stock_market_cap= details[2].text
stock_lastSplit= details[3].text
您可以创建数据框并导出到 csv。
推荐阅读
- aggregate - Mondrian:列式数据库的聚合表
- flask - Flask-Dramatiq-Callback 必须是 Actor
- ios - 如何防止 GMSMapView 惯性无限滚动?
- amazon-web-services - AWS Elastic Transcoder 状态 RSS 源
- algol - 我正面临有关 ALGOL 程序的问题
- excel - 复制不连续的单元格并粘贴在保留数字格式Excel VBA中的行中
- angular - 为什么 patchValue 在 angular 中的 formArray 中不起作用?
- python - 为什么纹理索引 31 在moderngl 中被覆盖?
- sql - SQL查询Union All
- reactjs - 为什么在这里为参数“人”添加花括号