|
楼主 |
发表于 2024-6-16 20:25:05
|
显示全部楼层
上面这种方法普适性可能不是很好,有些节点文本的选择不是很方便,最终采用下面的方式:
- @staticmethod
- def parse_re_desc_before_h2(job_resp: requests.Response) -> str:
- """
- 解析位于 id=readingAidText 标签下所有的文本
- 如果存在 <h2> 标签选择 <h2> 标签前面的元素文本
- 采用正则的方式提取 h2 前面元素并重新构建 selector
- """
- reading_aid_text = re.findall('<div.*?id="readingAidText".*?>(.*?)<h2>', job_resp.text, re.S)
- reading_aid_text = reading_aid_text[0] if reading_aid_text else '<div></div>'
- selector = Selector(text=reading_aid_text)
- desc = selector.xpath('//text()').getall()
- return ' '.join(desc).strip()
复制代码 |
|