如何提取页面企业简介区块所有href链接?Python代码运行问题求助
代码问题分析
- 缺少请求头伪装,绝大多数网站会拦截无User-Agent标识的爬虫请求,返回错误页面或反爬验证页面,导致后续无法解析到目标内容
- 无异常捕获逻辑,网络波动、页面不存在、请求超时等异常情况都会直接导致程序崩溃
- 单独写的
re、page1两行无实际作用,仅在Python交互式终端中会输出变量值,独立脚本运行时这两行没有任何效果 - 当前
find_all的筛选条件仅匹配指定class的a标签,无法提取页面内所有链接,和你描述的需求不符 - 提取到的href属性多为相对路径,没有拼接域名生成可直接访问的完整URL,后续无法直接使用
- 依赖lxml第三方解析器,若本地未安装该库会直接抛出解析错误,新手可优先使用Python内置的html.parser解析器
修正后可运行代码
import requests from bs4 import BeautifulSoup from urllib.parse import urljoin # 若后续需要将结果导出为表格可保留pandas导入,否则可以删除 # import pandas as pd # 基础参数配置 base_domain = "https://www.industrystock.com" target_page = "https://www.industrystock.com/en/companies/Agriculture" # 加请求头模拟浏览器访问,避免被反爬拦截 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" } link_list = [] try: # 发送请求,加超时限制避免长时间无响应 resp = requests.get(target_page, headers=headers, timeout=10) # 请求状态码非200时直接抛出异常,方便定位问题 resp.raise_for_status() # 用内置html.parser解析,无需额外安装第三方依赖 soup = BeautifulSoup(resp.text, "html.parser") # 提取所有a标签,若你只需要指定class的链接,替换为你原来的筛选条件即可 all_a = soup.find_all("a") for tag_a in all_a: href = tag_a.get("href") # 过滤空的href属性 if href: # 拼接相对路径为完整URL full_link = urljoin(base_domain, href) link_list.append(full_link) # 打印结果验证 print(f"共提取到{len(link_list)}个链接") # 打印前10个链接确认内容是否正确 print(link_list[:10]) except Exception as e: print(f"程序运行出错,错误信息:{e}")
内容的提问来源于stack exchange,提问作者Shovo Murad
相关产品推荐
相关产品推荐

