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

Scrapy爬虫需求:仅爬取A字母表格、清理HTML及补全PDF URL

解决方案

针对你的爬虫需求,需要做以下几处修改来实现目标:

1. 定位正确的法案数据行,仅保留字母'A'对应的条目

当前代码用.hasTip选中了页面顶部的字母选择栏(非目标数据),需要先定位到法案表格的行元素。步骤如下:

  • 先通过浏览器开发者工具查看页面结构,找到包含法案数据的表格(比如带特定类名的<table>标签),再定位表格内的行(如tr标签)
  • 遍历行时,先提取标题文本,判断是否以'A'开头,不符合则直接跳过

2. 提取纯文本内容,移除HTML元素

当前用.get()获取的是完整HTML节点,需要改用Scrapy的文本提取方法获取纯文本:

  • 提取标题/日期:使用::text伪元素获取节点内的所有文本片段,再用''.join()拼接并strip()去除多余空格
  • 避免直接获取整个HTML节点,确保输出为纯文本内容

3. 补全PDF文件的完整URL

提取到的PDF链接通常是相对路径,用response.urljoin()方法拼接域名,生成可直接访问的完整URL。

修改后的完整parse函数示例

def parse(self, response):
    # 定位法案表格的行(根据实际页面结构调整选择器,示例假设表格行是tr)
    rows = response.css('table tr')
    for row in rows:
        # 提取标题纯文本
        title_parts = row.css('td:nth-child(1) ::text').getall()
        title = ''.join(title_parts).strip()
        
        # 仅处理以'A'开头的条目
        if not title or not title.startswith('A'):
            continue
        
        # 提取日期纯文本
        date_parts = row.css('td:nth-child(2) ::text').getall()
        date = ''.join(date_parts).strip()
        
        # 提取PDF相对链接并补全域名
        relative_url = row.css('td a::attr(href)').get()
        source_url = response.urljoin(relative_url) if relative_url else None
        
        yield {
            "title": title,
            "source_url": source_url,
            "date": date,
        }

注意事项

  • 需根据页面实际HTML结构调整CSS选择器(比如表格的类名、列的位置、链接所在的元素),确保能精准定位目标数据
  • 如果页面是点击字母'A'按钮后动态加载数据,则需要先构造对应请求(比如POST表单请求),获取加载后的页面再进行解析

内容的提问来源于stack exchange,提问作者Vicente Antonio G. Reyes

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 09:52:43