英为财情获取企业数据

import requests
from bs4 import BeautifulSoup
import openpyxl

search_url = 'https://cn.investing.com/search/?q='

# 添加头部
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36'
}

# 打开Excel表格
wb = openpyxl.load_workbook(r'C:\Users\win10\Desktop\2.xlsx')
sheet = wb['Sheet1']

# 遍历企业名称列,获取相应的信息
for row in sheet.iter_rows(min_row=2, values_only=True):
    company_name = row[0]  # 假设企业名称在第一列

    # 搜索企业
    query_url = f'{search_url}{company_name}'
    print(query_url)
    response = requests.get(query_url,headers=headers)
    soup = BeautifulSoup(response.content, 'html.parser')

    # 获取跳转链接
    quote_link = soup.xpath('//a[@class="js-inner-all-results-quote-item row"]/@href')[0]
    quote_response = requests.get(quote_link,headers=headers)
    quote_soup = BeautifulSoup(quote_response.content, 'html.parser')

    profile_link = quote_soup.select('li')[-2]['href']
    profile_response = requests.get(profile_link,headers=headers)
    profile_soup = BeautifulSoup(profile_response.content, 'html.parser')

    # 获取企业简介
    profile_desc = profile_soup.select_one('#profile-fullStory-showhide').get_text(strip=True)

    # 获取企业地址
    address_spans = profile_soup.select('div.companyAddress span.float_lang_base_2.text_align_lang_base_2.dirLtr')
    address_texts = [span.get_text(strip=True) for span in address_spans]
    address = ''.join(address_texts)

    # 获取电话
    phone_span = profile_soup.select_one('div.companyPhone span.float_lang_base_2.text_align_lang_base_2.dirLtr')
    phone = phone_span.get_text(strip=True) if phone_span else ''

    # 获取网址
    web_span = profile_soup.select_one('div.companyWeb span.float_lang_base_2.text_align_lang_base_2.dirLtr')
    web = web_span.get_text(strip=True) if web_span else ''

    # 将获取到的信息添加到Excel表格对应的列中
    row_index = sheet.find(company_name).row  # 找到企业名称所在的行
    sheet.cell(row=row_index, column=11, value=profile_desc)  # 假设企业简介需要写入
    sheet.cell(row=row_index, column=10, value=address)  # 假设企业地址需要写入
    sheet.cell(row=row_index, column=7, value=phone)  # 假设电话需要写入
    sheet.cell(row=row_index, column=9, value=web)  # 假设网址需要写入

# 保存Excel表格
wb.save(r'C:\Users\win10\Desktop\2.xlsx')

首先,代码定义了一个 search_url 变量,然后通过 openpyxl 库读取本地的 Excel 表格文件并打开表格中的某个工作表(Sheet1)。

接着,代码将遍历 Excel 表格的每一行,并获取该行的第一个单元格(也就是企业名称),然后将企业名称作为搜索关键字发送请求到 Investing.com 的搜索页面。然后将返回的搜索结果解析为 HTML 后,从中提取出跳转链接,该链接指向包含该企业详细信息的页面。

接下来,代码在获取到企业详细信息页面的链接之后,再次发送请求并解析该页面。从中获取企业的地址、电话、网址等信息。最后,将获取到的信息写入到 Excel 表格的对应列中。

需要注意的是,对于一些企业信息可能无法获取或者获取不全的情况,代码使用了一些条件语句和异常处理机制来防止程序崩溃。此外,代码还添加了一些请求头信息,以防止被服务器识别为爬虫并拒绝访问。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值