从.csv中读取URL并将抓取结果添加到前面使用的Python、BeautifulSoup、Pandas
问题描述
我让这段代码几乎正常工作,尽管我对此一无所知。请帮我打出本垒打!
- 问题1:输入:
- 问题2:输出:
源文件实际上有3个驱动程序和3个挑战。在一个单独的python文件中,下面的代码查找、打印并保存所有3个文件,但在我使用下面的数据帧时不会(见下文-它只保存2个)。
- 问题3:输出:
在最后,我同时显示了输入和当前所需的输出。很抱歉问了这么长的问题。如有任何帮助,我将非常感激!
import requests
from bs4 import BeautifulSoup
import pandas as pd
urls = ['https://www.marketresearch.com/Infiniti-Research-Limited-v2680/Global-Induction-Hobs-30196623/', 'https://www.marketresearch.com/Infiniti-Research-Limited-v2680/Global-Human-Capital-Management-30196628/', 'https://www.marketresearch.com/Infiniti-Research-Limited-v2680/Global-Probe-Card-30196643/']
dataframes = []
dataframes2 = []
for url in urls:
page = requests.get(url)
soup = BeautifulSoup(page.text, 'html.parser')
toc = soup.find("div", id="toc")
def get_drivers():
data = []
for x in toc.select('li:-soup-contains-own("Market drivers") li'):
data.append(x.get_text(strip=True))
df = pd.DataFrame(data, columns=[url])
dataframes.append(pd.DataFrame(df).drop(0, axis=0))
df2 = pd.concat(dataframes)
tdata = df2.T
tdata.to_csv(f'detail-dr.csv', header=True)
get_drivers()
def get_challenges():
data = []
for y in toc.select('li:-soup-contains-own("Market challenges") li'):
data.append(y.get_text(strip=True).replace('Table Impact of drivers and challenges', ''))
df = pd.DataFrame(data, columns=[url])
dataframes2.append(pd.DataFrame(df).drop(0, axis=0))
df2 = pd.concat(dataframes2)
tdata = df2.T
tdata.to_csv(f'detail-ch.csv', header=True)
get_challenges()
每个URL中的输入如下所示。它们只是列表:
市场驱动因素
- 不断增加对FABS的投资
- 电子产品小型化
- 不断增长的物联网设备需求
市场挑战
- 半导体行业的快速技术变革
- 半导体行业的波动性
- 技术鸿沟的影响驱动因素和挑战的影响
我希望驱动程序的输出是:
0 | 1 | 2 | 3 |
---|---|---|---|
http/.../Global-Induction-Hobs-30196623/ | 产品创新和新设计 | 随着生活方式的改变,人们对方便的家用电器的需求不断增加 | 节能家电的应用日益增多 |
http/.../Global-Human-Capital-Management-30196628/ | 自动化招聘流程需求 | 对所有人力资源职能的统一解决方案的需求不断增加 | 增加劳动力多样性 |
http/.../Global-Probe-Card-30196643/ | 增加对FABS的投资 | 电子产品小型化 | 不断增长的物联网设备需求 |
但我得到的却是:
0 | 1 | 2 | 3 | 4 | 5 | 6 |
---|---|---|---|---|---|---|
http/.../Global-Induction-Hobs-30196623/ | 随着生活方式的改变,人们对方便的家用电器的需求不断增加 | 节能家电的应用日益增多 | ||||
http/.../Global-Human-Capital-Management-30196628/ | 对所有人力资源职能的统一解决方案的需求不断增加 | 增加劳动力多样性 | ||||
http/.../Global-Probe-Card-30196643/ | 电子产品小型化 | 不断增长的物联网设备需求 |
解决方案
将数据存储在字典列表中,并从中创建数据框。将drivers
/challenges
的列表拆分为单个columns
并将其连接到最终数据帧。
相关文章