爬虫问题,不论方法希望爬取到作者工作信息和教育信息
已有数据是一个Excel表格,版面如图所示

其中,作者栏是一纵列,包括第一作者第二作者等,如何爬取这些信息呢?由于每个作者在其工作单位的个人介绍页面网址端口并不相同,国内也没有统一的学术作者介绍网站,故本人无法编译出统一的代码去定向爬取。国内ChatGPT等人工智能大语言模型因为通过节点连接,无法联网搜索,故也无法帮助本人搜索并导出这些作者的教育和工作信息。可以从百度百科/高校界面/维基百科等任何可信网站获得信息,能爬到即可,不要求是python,八爪鱼也行
有一段代码,但不一定有用,可不用,只要结果,私信获得所有Excel数据
import pandas as pd
import requests
from bs4 import BeautifulSoup
import re
import time
import logging
# 配置日志
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
input_file = 'E:/资料/金融/RA/Python源代码/1234.xlsx'
df = pd.read_excel(input_file)
bing_search_url = "https://www.bing.com/search?q={}"
results = []
for index, row in df.iterrows():
authors = row['作者']
institution = row['作者单位']
author_names = re.split(r'[,\s;;]+', authors)
author_names = [re.sub(r'\d+$', '', name).strip() for name in author_names if name]
for author_name in author_names:
try:
search_query = f"{author_name} {institution} 教育背景 工作经历"
response = requests.get(bing_search_url.format(search_query), headers={"User-Agent": "Mozilla/5.0"})
response.raise_for_status()
soup = BeautifulSoup(response.content, 'html.parser')
found_info = False
for i, result in enumerate(soup.find_all('li', {'class': 'b_algo'}), start=1):
title = result.find('h2')
snippet = result.find('p')
if title and snippet:
info_text = snippet.get_text().strip()
results.append({
'作者': author_name,
'作者单位': institution,
'教育背景与工作经历': info_text
})
found_info = True
logging.info(f'已成功爬取 {author_name} 的信息:{info_text}')
break
if i > 5:
break
if not found_info:
logging.warning(f'未找到 {author_name} 的相关信息')
results.append({
'作者': author_name,
'作者单位': institution,
'教育背景与工作经历': '未找到'
})
time.sleep(2)
except requests.exceptions.HTTPError as e:
logging.error(f'HTTP错误: {e}')
results.append({
'作者': author_name,
'作者单位': institution,
'教育背景与工作经历': '未找到'
})
except Exception as e:
logging.error(f'爬取 {author_name} 时出错: {e}')
results.append({
'作者': author_name,
'作者单位': institution,
'教育背景与工作经历': '出错'
})
output_df = pd.DataFrame(results)
output_file = 'E:/资料/金融/RA/Python源代码/authors_bing_education_work_experience.xlsx'
output_df.to_excel(output_file, index=False)
logging.info(f'所有数据已保存至 {output_file}')