使用MainContentExtractor提取网页内容返回None的问题求助
排查网页主内容提取返回None的问题
先确认网页是否被正确获取
打印response.status_code查看是否为200,再输出content的前几百字符,排查是否拿到空页面、反爬提示页或JS渲染的空白源码。如果是动态页面,requests无法直接获取渲染后内容,得用selenium或playwright先渲染页面再提取源码。绕过封装层,直接用trafilatura原生方法测试
你的MainContentExtractor应该是基于trafilatura封装的,先排除封装逻辑的问题:import trafilatura downloaded = trafilatura.fetch_url(url) result = trafilatura.extract(downloaded, output_format="markdown") print(result)如果原生调用也返回None,说明该网页结构过于特殊,trafilatura无法自动识别主内容区域。
调整提取参数,放宽识别规则
试试开启更多提取选项,或降低内容识别的门槛:extracted_markdown = MainContentExtractor.extract(content, output_format="markdown", include_links=True, threshold=100)也可以先提取HTML片段,再用其他工具转markdown,避免格式转换时丢失内容:
extracted_html = MainContentExtractor.extract(content, output_format="html") from markdownify import markdownify extracted_markdown = markdownify(extracted_html)修复编码问题
不要硬编码utf-8,让requests自动检测网页编码:response.encoding = response.apparent_encoding先确认
content无乱码,乱码状态下trafilatura无法正常识别内容。添加请求头,规避反爬
很多网站会拦截requests默认请求头,添加模拟浏览器的User-Agent试试:headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36' } response = requests.get(url, headers=headers)
内容的提问来源于stack exchange,提问作者Fabiha
相关产品推荐
相关产品推荐

