You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Python爬虫输出链接文本与对应URL的组合内容至HTML文件?

解决方案:修改爬虫输出格式

嘿,这个需求很容易实现!核心就是在提取链接的时候,同时拿到链接文本和对应URL,然后把它们拼接成你要的格式就行。我帮你修改了代码,关键改动都加了注释:

import requests
from bs4 import BeautifulSoup
import re
from requests.compat import urljoin  # 用来把相对链接转成绝对链接

def jobs_crawler(max_pages):
    page = 1
    file_name = 'links.html'
    # 打开文件,用utf-8编码避免乱码,mode='w'会覆盖旧内容,要追加的话换成'a'
    with open(file_name, 'w', encoding='utf-8') as f:
        # 先写个简单的HTML头部,让输出文件更规范
        f.write("<html><body><ul>\n")
        while page <= max_pages:  # 改成<=避免少爬一页
            # 补充分页参数,你可以根据实际URL结构调整page参数的位置
            url = f'https://www.jobs.cz/prace/praha/?field%5B%5D=2&page={page}'
            try:
                response = requests.get(url)
                response.raise_for_status()  # 检查请求是否成功
                soup = BeautifulSoup(response.text, 'html.parser')
                
                # 找到所有链接文本包含指定关键词的a标签,把"指定文本"换成你要的内容
                target_links = soup.find_all('a', text=re.compile(r'指定文本', re.IGNORECASE))
                
                for a in target_links:
                    # 提取干净的链接文本,strip()去掉前后多余空格
                    link_text = a.get_text(strip=True)
                    # 处理URL:如果是相对链接,转成完整的绝对链接
                    link_url = urljoin(url, a['href'])
                    # 拼接成你要的格式
                    output_line = f"{link_text} - {link_url}"
                    # 写入HTML,用<li>包裹让列表更整齐
                    f.write(f"<li>{output_line}</li>\n")
                    
                print(f"第{page}页处理完成")
                page += 1
            except Exception as e:
                print(f"处理第{page}页出错: {str(e)}")
                page += 1
        # 补充HTML尾部
        f.write("</ul></body></html>")

# 调用爬虫,比如爬3页
jobs_crawler(3)

关键改动说明:

  • 引入urljoin:很多网站的链接是相对路径(比如/junior-developer/),用这个工具能把它转换成完整的绝对URL,避免输出无效链接。
  • 同时提取文本和URL:通过a.get_text(strip=True)拿到干净的链接文本,a['href']拿到链接地址,再拼接成你要的格式。
  • 规范HTML输出:用<ul>和<li>标签包裹内容,生成的HTML文件打开后是整齐的列表,可读性更强。
  • 增加异常处理:避免某一页请求失败导致整个爬虫直接崩溃。

如果不需要HTML格式,只想纯文本输出,把写入部分改成f.write(f"{output_line}\n"),同时去掉HTML头部和尾部的代码就行。

内容的提问来源于stack exchange,提问作者user1994521

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:16:36