如何批量从多个URL抓取德语动词并写入Excel对应单元格?
实现方案
以下是可直接运行的完整代码,已包含循环遍历、异常捕获、反爬适配逻辑:
from bs4 import BeautifulSoup from openpyxl import Workbook import requests import time import random # 初始化Excel工作簿 wb = Workbook() ws = wb.active # 配置参数,请替换为你自己的实际值 URL_TXT_PATH = "urls.txt" # 存储2700条URL的文本文件路径 REQUEST_COOKIES = {'COOKIE_WILL_BE_HERE'} # 你自己的有效Cookie REQUEST_HEADERS = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36' } FAILED_URLS = [] # 存储请求失败的URL,后续可单独补全 # 读取所有URL with open(URL_TXT_PATH, 'r', encoding='utf-8') as f: url_list = [line.strip() for line in f if line.strip()] # 循环处理每个URL for row_num, url in enumerate(url_list, start=1): try: # 发送请求 resp = requests.get( url, cookies=REQUEST_COOKIES, headers=REQUEST_HEADERS, timeout=10 ) resp.raise_for_status() # 提取动词,两种方案二选一即可 # 方案1:沿用你原有页面解析逻辑,适合需要校验页面返回正确性的场景 soup = BeautifulSoup(resp.text, 'html.parser') infiniv_tag = soup.find_all('a')[44] verb = infiniv_tag.text.strip() # 方案2:直接从URL提取动词,无需解析页面,效率更高、不会受页面结构变动影响 # verb = url.split('-verb-')[-1].replace('.html', '').strip() # 写入Excel对应A列单元格 ws.cell(row=row_num, column=1, value=verb) # 随机延时,避免触发反爬规则 time.sleep(random.uniform(1, 3)) print(f"已完成:{row_num}/{len(url_list)} | {verb}") except Exception as e: print(f"处理失败:第{row_num}条URL {url} | 错误:{str(e)}") FAILED_URLS.append(url) continue # 保存最终文件 wb.save('AlleVerben.xlsx') # 输出失败的URL清单 if FAILED_URLS: print(f"\n共{len(FAILED_URLS)}条URL处理失败:") for fail_url in FAILED_URLS: print(fail_url)
注意事项
- 若爬取过程中被网站限制,可适当调大
time.sleep的延时区间 - 若页面结构变动导致下标44的定位逻辑失效,直接切换方案2提取动词即可
内容的提问来源于stack exchange,提问作者user14857618
相关产品推荐
相关产品推荐

