Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $YECBGYFECGEAFWHA as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2

Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $BBWFDDBHHYHDXXAB as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2
百度百科XPath爬虫返回空结果:如何解决HTTP重定向问题?_创想鸟

百度百科XPath爬虫返回空结果:如何解决HTTP重定向问题?

百度百科xpath爬虫返回空结果:如何解决http重定向问题?

百度百科XPath爬虫:解决HTTP重定向导致空结果的问题

本文针对使用XPath爬取百度百科时遇到的空结果问题,提供解决方案。 问题根源在于代码未正确处理HTTP重定向,导致爬取到的页面并非目标词条页面。

以下代码片段演示了问题所在:该代码尝试提取百度百科词条摘要,但由于百度百科URL重定向,导致XPath提取失败,返回空结果。

import urllib.requestimport urllib.parsefrom lxml import etreedef query(content):    url = 'https://baike.baidu.com/item/' + urllib.parse.quote(content)    headers = {        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'    }    req = urllib.request.Request(url=url, headers=headers, method='GET')    response = urllib.request.urlopen(req) # 这里未处理重定向    text = response.read().decode('utf-8')    html = etree.HTML(text)    sen_list = html.xpath('//div[contains(@class,"lemma-summary") or contains(@class,"lemmaWgt-lemmaSummary")]//text()')    sen_list_after_filter = [item.strip('n') for item in sen_list]    return ''.join(sen_list_after_filter)if __name__ == '__main__':    while (True):        content = input('查询词语:')        result = query(content)        print("查询结果:%s" % result)

例如,使用curl命令测试“叶挺”词条,会发现服务器返回302重定向,并给出新的URL。 原始代码未处理此重定向,直接使用初始URL返回的HTML,导致XPath提取失败。

解决方案:

为了解决这个问题,需要修改代码以处理HTTP重定向。 可以使用urllib.request.urlopen方法的follow_redirects参数,将其设置为True,或者使用更高级的HTTP客户端库(例如requests)来更优雅地处理重定向。

改进后的代码如下:

import urllib.requestimport urllib.parsefrom lxml import etreedef query(content):    url = 'https://baike.baidu.com/item/' + urllib.parse.quote(content)    headers = {        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'    }    req = urllib.request.Request(url=url, headers=headers, method='GET')    response = urllib.request.urlopen(req, timeout=10) # 添加超时设置    text = response.read().decode('utf-8', errors='ignore') # 添加错误处理    html = etree.HTML(text)    sen_list = html.xpath('//div[contains(@class,"lemma-summary") or contains(@class,"lemmaWgt-lemmaSummary")]//text()')    sen_list_after_filter = [item.strip('n') for item in sen_list]    return ''.join(sen_list_after_filter)if __name__ == '__main__':    while (True):        content = input('查询词语:')        result = query(content)        print("查询结果:%s" % result)

通过处理重定向后,XPath就能正确提取信息,解决空结果问题。 此外,代码中添加了超时设置和错误处理,增强了代码的健壮性。 建议使用更强大的库,例如requests,来简化HTTP请求的处理。

以上就是百度百科XPath爬虫返回空结果:如何解决HTTP重定向问题?的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1358489.html

赞 (0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
pip3报错“_NamespacePath 对象没有属性 sort”该如何解决?
上一篇 2025年12月13日 21:53:21
使用pip install .安装Python包时,为什么只有dist-info文件夹而缺少包文件?
下一篇 2025年12月13日 21:53:35

相关推荐

  • Sublime怎么新建文件?新建文件的4种快捷操作方式

    Sublime怎么新建文件?新建文件的4种快捷操作方式Sublime怎么新建文件?新建文件的4种快捷操作方式Sublime怎么新建文件?新建文件的4种快捷操作方式Sublime怎么新建文件?新建文件的4种快捷操作方式

    在sublime text中新建文件有四种主要方法,适合不同使用场景。① 使用快捷键 ctrl + n(windows/linux)或 cmd + n(mac)可快速在当前窗口打开未命名新文件,适合临时编写内容;② 通过菜单栏点击 “file → new file” 实现相同功能,适合新手熟悉界面;…

    2026年10月2日 • 用户投稿
    100
  • 惠普ProBook风扇转速不稳?调整与优化技巧

    惠普ProBook风扇转速不稳?调整与优化技巧惠普ProBook风扇转速不稳?调整与优化技巧惠普ProBook风扇转速不稳?调整与优化技巧惠普ProBook风扇转速不稳?调整与优化技巧

    惠普ProBook风扇异常可通过五种方法优化:1. 使用HP CoolSense自动调节温控;2. 在BIOS中设置自订风扇控制选项,调整数值至3或4以增强散热;3. 优化电源管理,降低最大处理器状态至80%-90%;4. 通过任务管理器清理高CPU占用的后台进程;5. 物理清洁散热口灰尘,确保通风…

    2026年10月2日 • 用户投稿
    200
  • Sublime如何运行Python?配置Python环境的完整步骤

    Sublime如何运行Python?配置Python环境的完整步骤Sublime如何运行Python?配置Python环境的完整步骤Sublime如何运行Python?配置Python环境的完整步骤Sublime如何运行Python?配置Python环境的完整步骤

    要让 sublime text 运行 python,需先确认已安装 python,再配置编译系统。1. 确认本地已安装 python:windows 在 cmd 输入 python –version 或 python3 –version,macos/linux 在终端输入 p…

    2026年10月2日 • 用户投稿
    000
  • win10拨号连接错误651怎么解决_宽带连接调制解调器报告错误修复

    win10拨号连接错误651怎么解决_宽带连接调制解调器报告错误修复win10拨号连接错误651怎么解决_宽带连接调制解调器报告错误修复win10拨号连接错误651怎么解决_宽带连接调制解调器报告错误修复win10拨号连接错误651怎么解决_宽带连接调制解调器报告错误修复

    错误651通常由网络设备、驱动或系统配置问题导致。首先重启光猫、路由器并检查网线连接;随后更新或重装网卡驱动;接着以管理员身份运行命令提示符,执行netsh winsock reset和netsh int ip reset重置网络协议栈;若问题依旧,可尝试备份并替换C:WindowsSystem32…

    2026年10月2日 • 用户投稿
    400
  • java怎样用length获取数组长度 java数组长度语句的简单用法

    java怎样用length获取数组长度 java数组长度语句的简单用法java怎样用length获取数组长度 java数组长度语句的简单用法java怎样用length获取数组长度 java数组长度语句的简单用法java怎样用length获取数组长度 java数组长度语句的简单用法

    在java中获取数组长度需访问其length字段,1. length是数组的公共final字段,表示创建时分配的固定大小,使用时直接通过array.length访问,不可加括号;2. 数组长度在创建后不可变,运行时无法修改length值,若需扩容需创建新数组并复制元素;3. length字段用于避免…

    2026年10月2日 • 用户投稿
    100
  • Sublime Text 中 Tab 键与空格缩进的冲突处理

    Sublime Text 中 Tab 键与空格缩进的冲突处理Sublime Text 中 Tab 键与空格缩进的冲突处理Sublime Text 中 Tab 键与空格缩进的冲突处理Sublime Text 中 Tab 键与空格缩进的冲突处理

    sublime text 中 tab 键和空格缩进冲突可通过统一缩进风格并配置编辑器解决。1. 启用 “draw_white_space”: “all” 或使用 trailing spaces 插件检测混用情况;2. 使用 convert indent…

    2026年10月2日 • 用户投稿
    100
  • Spring Boot: 从 XML 文件中获取所有 Bean 实例

    Spring Boot: 从 XML 文件中获取所有 Bean 实例Spring Boot: 从 XML 文件中获取所有 Bean 实例Spring Boot: 从 XML 文件中获取所有 Bean 实例Spring Boot: 从 XML 文件中获取所有 Bean 实例

    本文介绍了如何在 Spring Boot 应用中,通过 ApplicationContext 的 getBeansOfType() 方法,高效地从 XML 配置文件中获取所有指定类型的 Bean 实例。相比于逐个获取 Bean,该方法可以一次性获取所有 Bean,简化代码,提高效率。本文将提供详细的…

    2026年10月2日 • 用户投稿
    100
  • js如何实现拖拽功能

    js如何实现拖拽功能js如何实现拖拽功能js如何实现拖拽功能js如何实现拖拽功能

    实现javascript拖拽功能的核心是监听mousedown、mousemove和mouseup事件,通过计算鼠标偏移量实时更新元素位置,推荐使用transform: translate()提升性能。1. 对于多个可拖拽元素,可采用事件委托,将事件绑定在父容器上,通过判断e.target实现统一管…

    2026年10月2日 • 用户投稿
    100
  • win10无法更改账户类型怎么办_标准用户提升为管理员权限的方法

    win10无法更改账户类型怎么办_标准用户提升为管理员权限的方法win10无法更改账户类型怎么办_标准用户提升为管理员权限的方法win10无法更改账户类型怎么办_标准用户提升为管理员权限的方法win10无法更改账户类型怎么办_标准用户提升为管理员权限的方法

    使用管理员命令提示符输入net localgroup administrators 用户名 /add可成功添加管理员权限;2. 启用内置Administrator账户后通过控制面板修改其他账户类型;3. 利用lusrmgr.msc工具在本地用户和组中将目标账户加入Administrators组,完成…

    2026年10月2日 • 用户投稿
    100
  • 前荣耀 CEO 赵明谈离职后去向:外面传的都是“捕风捉影”

    前荣耀 CEO 赵明谈离职后去向:外面传的都是“捕风捉影”前荣耀 CEO 赵明谈离职后去向:外面传的都是“捕风捉影”前荣耀 CEO 赵明谈离职后去向:外面传的都是“捕风捉影”前荣耀 CEO 赵明谈离职后去向:外面传的都是“捕风捉影”

    9 月 17 日,前荣耀终端有限公司 ceo 赵明在复旦大学“领变者论坛”上回应了外界关于其离职后去向的种种传闻。 赵明强调,所有流传的“他去哪儿”的消息纯属无稽之谈,他并未与传闻中涉及的公司进行过接洽。“我和一鸣(字节跳动创始人张一鸣)确实认识,但合作一事并不存在。”同时,他也明确表示,与智界之间…

    2026年10月2日 • 用户投稿
    100
  • Sublime怎么注释多行?多行注释与取消注释的终极方案

    Sublime怎么注释多行?多行注释与取消注释的终极方案Sublime怎么注释多行?多行注释与取消注释的终极方案Sublime怎么注释多行?多行注释与取消注释的终极方案Sublime怎么注释多行?多行注释与取消注释的终极方案

    sublime text 多行注释可通过多种方法实现。1. 使用快捷键 ctrl + /(windows/linux)或 cmd + /(mac)可对选中的多行代码进行单行注释,再次按下取消注释;2. 通过块选择功能(alt+拖动或option+拖动),可在多行指定位置手动输入注释符;3. 安装插件…

    2026年10月2日 • 用户投稿
    000
  • Windows10系统笔记本电脑续航比Windows11系统好

    Windows10系统笔记本电脑续航比Windows11系统好Windows10系统笔记本电脑续航比Windows11系统好Windows10系统笔记本电脑续航比Windows11系统好Windows10系统笔记本电脑续航比Windows11系统好

    目前市面上的笔记本电脑通常预装了微软的windows操作系统,其中主流的是windows 11,但也有部分机器搭载的是windows 10。尽管硬件配置相同,但不同操作系统的笔记本电脑在续航表现上存在差异,其中预装windows 10系统的笔记本续航时间更长。国外的专业测试人员针对这一现象进行了详细…

    2026年10月2日 • 用户投稿
    200
  • java如何使用HashMap存储键值对数据 java映射表操作的实用编程技巧

    java如何使用HashMap存储键值对数据 java映射表操作的实用编程技巧java如何使用HashMap存储键值对数据 java映射表操作的实用编程技巧java如何使用HashMap存储键值对数据 java映射表操作的实用编程技巧java如何使用HashMap存储键值对数据 java映射表操作的实用编程技巧

    hashmap在java中通过键快速查找值,理论查找时间为o(1),优于arraylist的o(n)和treemap的o(log n);1. 使用put添加键值对,get获取值,remove删除,containskey判断键存在,size获取大小;2. 键必须唯一且正确实现hashcode()和eq…

    2026年10月2日 • 用户投稿
    200
  • JS如何实现桥接模式?桥接的实现

    JS如何实现桥接模式?桥接的实现JS如何实现桥接模式?桥接的实现JS如何实现桥接模式?桥接的实现JS如何实现桥接模式?桥接的实现

    桥接模式的核心思想是将抽象与实现分离,通过组合方式让二者独立变化,避免类爆炸问题。在JavaScript中,通过定义抽象层(如Shape)和实现层(如DrawingAPI),使抽象层持有实现层引用,从而实现运行时动态切换绘制方式(如Canvas或SVG)。该模式适用于存在多维度变化的场景,如图表库需…

    2026年10月2日 • 用户投稿
    200
  • 豆包AI如何分享聊天记录 社交功能使用指南

    本文将为您详细介绍豆包AI的聊天记录分享功能。我们将通过分步教学的方式,引导您如何轻松地将指定的对话内容生成一个可分享的链接,并对分享后的内容进行管理,从而方便您与他人进行知识交流或协作,完整地学习整个操作过程。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek…

    2026年10月2日
    100
  • Win7电脑如何设置密码?

    Win7电脑如何设置密码?Win7电脑如何设置密码?Win7电脑如何设置密码?Win7电脑如何设置密码?

    很多朋友的电脑里保存了一些重要的文件和资料,为了保障这些资料的安全性,就需要给电脑设置密码了。那么如何给电脑设置密码呢?其实操作起来非常简单,接下来就由我来为大家讲解一下具体步骤。 随着人们对个人隐私保护意识的增强,不少人都希望为自己的电脑添加密码保护功能,但又不清楚具体的设置流程。为了帮助大家顺利…

    2026年10月2日 • 用户投稿
    300
  • 小可搜搜App如何判断信息真伪 小可搜搜App的谣言辨别功能

    小可搜搜App如何判断信息真伪 小可搜搜App的谣言辨别功能小可搜搜App如何判断信息真伪 小可搜搜App的谣言辨别功能小可搜搜App如何判断信息真伪 小可搜搜App的谣言辨别功能小可搜搜App如何判断信息真伪 小可搜搜App的谣言辨别功能

    答案是使用小可搜搜App可通过关键词搜索、AI识别、人工审核和订阅预警四种方式核查信息真伪。首先在搜索框输入关键词,查看带【官方辟谣】标签的结果;其次使用“AI识谣”功能粘贴文本自动检测;若无法判定可提交人工核验并跟踪进度;最后可在设置中开启“谣言预警”接收特定领域辟谣推送。 如果您在使用小可搜搜A…

    2026年10月2日 • 用户投稿
    100
  • HTML/CSS 代码片段的自动生成技巧

    HTML/CSS 代码片段的自动生成技巧HTML/CSS 代码片段的自动生成技巧HTML/CSS 代码片段的自动生成技巧HTML/CSS 代码片段的自动生成技巧

    使用 emmet 语法快速生成 html 结构的方法是通过简短的缩写提升效率,例如输入 ! 然后按 tab 键生成 html5 骨架,或使用 div#container>ul.list>li.item*5>a{link} 快速构建嵌套结构;css 预处理器如 sass 或 less…

    2026年10月2日 • 用户投稿
    200
  • 将 Flux 转换为 Mono 中的 List:Reactor 教程

    本文旨在解决在使用 Project Reactor 时,如何将一个 Flux 流转换为 List 并将其设置到 Mono 对象内部的问题。我们将详细介绍如何使用 collectList() 操作符将 Flux 收集为 List,然后将其映射到 Mono 对象中,最终创建一个包含完整数据的新 Pers…

    2026年10月2日
    200
  • laravel怎么在Nginx或Apache服务器上正确配置_laravel在Nginx/Apache服务器配置方法

    首先确保Web服务器指向Laravel的public目录并配置重写规则,Nginx需设置root和try_files指令,Apache需启用mod_rewrite并配置DocumentRoot及AllowOverride权限,最后调整文件权限与所有权以确保正常访问。 如果您尝试在服务器上部署 Lar…

    2026年10月2日
    100

发表回复

登录后才能评论
关注微信