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

Scrapy正则匹配h2、bold标签中数字开头完整内容问题求助

问题原因

你当前使用的正则r'\d+\.\s*\w+'中,\w+仅能匹配连续的字母、数字、下划线字符,一旦遇到空格、英文撇号、特殊符号就会停止匹配,因此只能抓取到标题的第一个单词。

正确正则表达式

你可以使用以下正则匹配完整的数字开头标题内容:
r'^\d+\.\s*.+'
规则说明:

  • ^ 锚定匹配字符串开头,确保只匹配以「数字+点」格式开头的内容
  • \d+ 匹配1位及以上的数字
  • \. 匹配小数点
  • \s* 匹配小数点后0到多个空白字符
  • .+ 匹配剩余所有字符直到当前文本段结束,包含空格、特殊符号等内容

如果你需要避免匹配到末尾的多余标点,可以调整为:
r'^\d+\.\s*[^,,。?!\n]+'

修改后的完整代码

import scrapy
import re

class TestSpider(scrapy.Spider):
    name = 'test'
    allowed_domains = ['www.tasteatlas.com','www.lih.travel','www.crazymasalafood.com','www.holidify.com','www.jaipurcityblog.com','www.trip101.com','www.adequatetravel.com']

    start_urls = ['https://www.adequatetravel.com/blog/famous-foods-in-jaipur-you-must-try/',
                  'https://www.holidify.com/pages/street-food-in-jaipur-1483.html'
                  ]

    def parse(self, response):
        # 匹配h2标签内容
        h2_res = response.css('h2::text').re(r'^\d+\.\s*.+')
        if h2_res:
            print(h2_res)
        # 匹配b标签内容
        b_res = response.css('b::text').re(r'^\d+\.\s*.+')
        if b_res:
            print(b_res)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 03:57:03