用selenium库爬取爱企查体育类企业相关信息

微信公众号:Garry的学习生涯

这段代码是用于爬取爱查网(https://www.aiqicha.com)上体育类企业的相关信息,包括企业名称、信用代码、成立时间和法人代表。下面是每一行代码的解释和注释:

import csv # 导入csv模块,用于处理CSV文件
import requests # 导入requests模块,用于发送HTTP请求
from time import sleep # 导入sleep函数,用于暂停程序执行
from bs4 import BeautifulSoup # 导入BeautifulSoup模块,用于解析HTML文档
from selenium import webdriver # 导入webdriver模块,用于自动化浏览器操作
from selenium.webdriver import Keys # 导入Keys类,用于模拟键盘按键操作
from selenium.webdriver.common.by import By # 导入By类,用于指定元素定位方式
from selenium.webdriver import ActionChains # 导入ActionChains类,用于模拟鼠标操作

接下来,代码打开一个名为"D:\爱企查.csv"的文件,以追加模式写入数据,并设置编码为utf-8-sig。然后创建一个csv.writer对象,用于将数据写入CSV文件。

fi = open("D:\\爱企查.csv", "a", newline="", encoding="utf-8-sig")
writer = csv.writer(fi)
writer.writerow(("企业名称", "信用代码", "成立时间", "法人代表"))

接下来,使用selenium的webdriver模块启动Chrome浏览器,并访问爱查网的网址。

driver = webdriver.Chrome()
driver.get('https://www.aiqicha.com')

在网页中查找输入框,并输入关键词"体育"。

el_1 = driver.find_element(By.ID, 'aqc-search-input')
el_1.send_keys('体育')

点击搜索按钮,等待页面加载完成。

driver.find_element(By.XPATH, '/html/body/div[1]/div[2]/div/div[1]/div[2]/button').click()
sleep(2)

获取当前页面的源代码,并使用BeautifulSoup解析HTML文档。

a = driver.page_source
soup = BeautifulSoup(a, "lxml")

找到包含验证码的元素,并提取其id属性值。

number = soup.find("div", class_="vcode-spin-button")['id']

根据验证码元素的id属性值,构造验证码拖动的目标元素的xpath表达式。

number_last_3 = number[-3:]

#此步破解百度图片滑动验证

                                 

当页面源代码长度大于0时,循环执行以下操作:

  1. 切换到新打开的窗口。

  2. 找到验证码源元素和目标元素。

  3. 使用ActionChains模拟鼠标拖动操作。

  4. 等待2秒。

  5. 重新获取页面源代码,并使用BeautifulSoup解析HTML文档。

  6. 更新页面源代码长度。

while len(a) > 0:
windows = driver.window_handles
driver.switch_to.window(windows[-1])
source = driver.find_element(By.XPATH, f'//*[@id="vcode-spin-button-p{number_last_3}"]')
target = driver.find_element(By.XPATH, f'//*[@id="vcode-spin-button-p{number_last_3}"]')
ActionChains(driver).drag_and_drop(source, target).perform()
sleep(2)
soup = BeautifulSoup(driver.page_source, "lxml")
a = soup.find_all("div", class_="vcode-spin-button")

切换回主窗口。

windows = driver.window_handles
driver.switch_to.window(windows[-1])

添加cookie,刷新页面。(写入登录后你的cookie的名字和value)

existing_cookie = {"name": " ", "value": " "}
driver.add_cookie(existing_cookie)
driver.refresh()

循环抓取第1页至第30页的数据。

for b in range(1, 31):
windows = driver.window_handles
driver.switch_to.window(windows[-1])
sleep(1)
for c in range(1, 11):
js = f'window.scrollTo(10000,0);'
driver.execute_script(js)
driver.find_element(By.XPATH, f"/html/body/div[1]/div[2]/div/div[1]/div[3]/div[2]/ul/div/div/input").click()
windows = driver.window_handles
driver.switch_to.window(windows[-1])
concent = driver.page_source
soup = BeautifulSoup(concent, "lxml")
try:
company_name = soup.find("h1", class_="name").get_text()
except:
company_name = "无相关内容"
try:
cridit_code = soup.find("span", class_="social-credit-code-text").get_text()
except:
cridit_code = "无相关内容"
try:
founding_time = soup.find_all("div", class_="info-item")[3].get_text().split()[1]
except:
founding_time = "无相关内容"
try:
legal_representative = soup.find("div", class_="info-item").get_text().split()[1]
except:
legal_representative = "无相关内容"
writer.writerow((company_name, cridit_code, founding_time, legal_representative))
driver.back()
l = driver.find_element(By.XPATH, '/html/body/div[1]/div[2]/div/div[1]/div[3]/div[2]/ul/div/div/input')
l.send_keys(Keys.BACK_SPACE)
l.send_keys(Keys.BACK_SPACE)
l.send_keys(f'{b}', Keys.ENTER)
sleep(5)
print("抓取完成第{}页".format(b))
el_3 = driver.find_element(By.XPATH, '/html/body/div[1]/div[2]/div/div[1]/div[3]/div[2]/ul/div/div/input')
el_3.send_keys(Keys.BACK_SPACE)
el_3.send_keys(Keys.BACK_SPACE)
el_3.send_keys(f'{b + 1}', Keys.ENTER)
js = f'window.scrollTo(10000,0);'
driver.execute_script(js)
sleep(3)
fi.close()
print("抓取完成!")
<think>好的,我现在需要处理用户关于API文档和接口调用的问题。首先,用户希望了解如何找到相关的API信息和文档,以及如何调用这些接口。根据用户提供的引用内容,我需要结合现有的系统架构和接口开发知识来回答。 首先,用户提到的引用[2]中提到了不同语言的API接口,比如JAVAAPI、PythonAPI等,它们通过网关或APISERVER连接。这可能意味着的API可能也有类似的结构,不同语言的客户端需要通过特定的网关或服务器进行调用。我需要确认是否提供多语言支持的API,并建议用户阅官方文档的语言支持部分。 引用[1]讨论了API文档的编写,包括API名称设置和分组。这可能提示用户需要在的开发者平台上创建应用,获取API密钥,并按照文档中的步骤进行接口调用。此外,引用[3]提到接口用于连接前后端和移动端,并进行接口测试,这可能意味着用户需要关注接口的测试和认证方式,比如OAuth或API密钥。 用户可能需要具体的步骤,比如注册开发者账号、找API文档、获取API密钥、调用示例等。由于的具体API信息可能未在提供的引用中直接提到,我需要建议用户访问官方网站或联系技术支持,同时参考类似API的通用调用方法,比如使用Python的requests发送HTTP请求,处理返回的JSON数据。 另外,引用[4]中的后台演示地址可能不是直接相关,但可以提醒用户注意API的端点URL结构和可能的认证参数。例如,接口URL可能类似于http://api.example.com/it,需要传递token或其他参数。 总结来说,回答需要包括找官方文档的途径、注册流程、接口调用步骤(认证、请求参数、示例代码),以及常见问题解决方法。同时,生成的相关问题应覆盖认证方式、参数说明、错误处理和与其他API的比较等。</think>### 关于 API 的接口调用与文档获取 根据您的问题,以下是分步骤的解答与建议: --- #### **1. 找官方文档与注册开发者账号** - **官方渠道**:的API文档通常需要通过其官方网站或开发者平台获取。建议访问其官网(如`https://aiqicha.baidu.com`)的“开放平台”或“开发者中心”模块[^1]。 - **注册与认证**:多数企业信息询API需要企业实名认证。注册后,需创建应用并获取`API Key`或`Token`,用于身份验证[^1][^2]。 --- #### **2. 接口调用关键步骤** - **认证方式**:常见方式包括: - **API Key**:在请求头或参数中添加`apikey=xxx`。 - **OAuth 2.0**:通过令牌(`access_token`)访问,需先获取授权。 - **请求参数**:典型参数如下(以企业名称询为例): ```python import requests url = "https://api.aiqicha.com/v1/company/search" params = { "keyword": "阿里巴巴", "apikey": "your_api_key_here", "page": 1 } response = requests.get(url, params=params) data = response.json() # 返回JSON格式的企业信息 ``` - **返回格式**:一般为JSON,包含企业名称、注册号、法人、经营范围等字段[^3]。 --- #### **3. 接口类型与功能** 根据类似平台的API设计,可能包含以下功能: - **企业基础信息询**:通过名称/注册号获取工商信息。 - **股东与高管询**:关联企业或自然人股东详情。 - **知识产权询**:商标、专利等数据[^2]。 --- #### **4. 注意事项与常见问题** - **频率限制**:免费版通常有每日调用次数限制(如1000次/天),超出需付费升级。 - **数据更新**:企业信息可能存在延迟,需确认数据更新频率。 - **错误码处理**:如`401`表示认证失败,`403`为权限不足,需检API Key或套餐权限。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值