Python抓取网页中的超链接以及其文本

2023-11-17

0.准备工作:读入网页加以解析抓取,需要用到的软件包是 requests_html 。我们此处并不需要这个软件包的全部功能,只读入其中的 HTMLSession 就可以。

from requests_html import HTMLSession

  1. 建立一个会话(session),即让Python作为一个客户端,和远端服务器交谈:

session = HTMLSession()

  1. url = 'https://www.baidu.com'
  2. r = session.get(url)
  3. print(r.html.text)
  4. r.html.links //获取链接
  5. r.html.absolute_links//获取绝对链接
  6. 检查-分栏-确认该区域就是我们要找的链接和文字描述后,选择 Copy -> Copy selector#__next > div._21bLU4._3kbg6I > div > div._gp-ck > section:nth-child(1) > article > div:nth-child(186) > pre
  7. 定义变量:sel = 'body > div.note > div.post > div.article > div.show-content > div > p:nth-child(4) > a'
  8. results = r.html.find(sel)
  9. Python 显示 results 结果数据对应的文本。results[0].text
  10. 把链接也提取出来results[0].absolute_links

显示的结果却是一个集合。{'https://www.jianshu.com/nb/130182'}

我们不想要集合,只想要其中的链接字符串。所以我们先把它转换成列表,然后从中提取第一项,即网址链接。

list(results[0].absolute_links)[0]

设计一个函数,只需给定一个选择路径(sel),它就把找到的所有描述文本和链接路径都返回给我们。

def get_text_link_from_sel(sel) :

    mylist = [ ]

    try :

        results = r.html.find(sel)

        for result in results:

            mytext = result.text   #提取单个文本

            mylink = list(result.absolute_links)[0]  #提取单个链接

            mylist.append((mytext, mylink))   #将每个结果加入list中

        return mylist 

    except:

        return None

  1. 查看规律,得:

sel = 'body > div.note > div.post > div.article > div.show-content > div > p > a'

我们还得把采集到的信息输出到Excel中保存起来。

import pandas as pd

df = pd.DataFrame( get_text_link_from_sel(sel) )

df.columns = ['text', 'link']   #更换列名

df.to_csv('output.csv', encoding='gbk', index=False)  

#以把抓取的内容输出到Excel中了。Pandas内置的命令,就可以把数据框变成csv格式。注意这里需要指定encoding(编码)为gbk,否则默认的utf-8编码在Excel中查看的时候,有可能是乱码。

代码如下

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python抓取网页中的超链接以及其文本 的相关文章

  • 如何用 python 和 sympy 解决多元不等式?

    我对使用 python 和 Sympy 还很陌生 并且遇到了使用 sympy 解决多元不等式的问题 假设我的文件中有很多函数 如下所示 cst sqrt x 2 cst exp sqrt cst x 1 4 log log sqrt cst
  • 获取单个方程的脚本

    在文本文件中输入 a 2 8 b 3 9 c 4 8 d 5 9 e a b f c d g 0 6 h 1 7 i e g j f h output i j 期望的输出 输出 2 8 3 9 0 6 4 8 5 9 1 7 如果输入文件名
  • 如何自动替换多个文件的文本内容中的字符?

    我有一个文件夹 myfolder包含许多乳胶表 我需要替换其中每个字符 即替换任何minus sign by an en dash 只是为了确定 我们正在替换连字符INSIDE该文件夹中的所有 tex 文件 我不关心 tex 文件名 手动执
  • 如何将条目中的部分文本加粗并更改其背景颜色?

    我正在创建一个基于 Tkinter 的 GUI 它有一个 Entry 小部件 我想将其文本的一部分加粗并更改其背景颜色 但我不知道我该怎么做 如果我使用文本小部件 我可以只使用标签 但看起来它们不能与条目小部件一起使用 此代码使用文本小部件
  • NLTK、搭配问题:需要解包的值太多(预期为 2)

    我尝试使用 NLTK 检索搭配 但出现错误 我使用内置的古腾堡语料库 I wrote alice nltk corpus gutenberg fileids 7 al nltk corpus gutenberg words alice al
  • 使用正则表达式解析 Snort 警报文件

    我正在尝试使用 Python 中的正则表达式从 snort 警报文件中解析出源 目标 IP 和端口 和时间戳 示例如下 03 09 14 10 43 323717 1 2008015 9 ET MALWARE User Agent Win9
  • 在 python-docx 中搜索和替换

    我有一个包含以下字符串的文档 模板 你好 我的名字是鲍勃 鲍勃是一个很好的名字 我想使用 python docx 打开此文档并使用 查找和替换 方法 如果存在 来更改每个字符串 Bob gt Mark 最后 我想生成一个新文档 其中包含字符
  • 反加入熊猫

    我有两个表 我想附加它们 以便仅保留表 A 中的所有数据 并且仅在其键唯一时添加表 B 中的数据 键值在表 A 和 B 中是唯一的 但在某些情况下键将出现在表 A 和 B 中 我认为执行此操作的方法将涉及某种过滤联接 反联接 以获取表 B
  • Pandas:根据列名进行列的成对乘法

    我有以下数据框 gt gt gt df pd DataFrame ap1 X 1 2 3 4 as1 X 1 2 3 4 ap2 X 2 2 2 2 as2 X 3 3 3 3 gt gt gt df ap1 X as1 X ap2 X a
  • 在wxpython中使用wx.TextCtrl并在按钮单击后显示数据的简单示例 - wx新手

    我正在学习 python 并尝试使用 wxpython 进行 UI 开发 也没有 UI exp 我已经能够创建一个带有面板 按钮和文本输入框的框架 我希望能够在文本框中输入文本 并让程序在单击按钮后对输入框中的文本执行操作 我可以获得一些关
  • 字典的嵌套列表

    我正在尝试创建dict通过嵌套list groups Group1 A B Group2 C D L y x 0 for y in x if y x 0 for x in groups d k v for d in L for k v in
  • 在 Mac 上安装 Pygame 到 Enthought 构建中

    关于在 Mac 上安装 Pygame 有许多未解答的问题 但我将在这里提出我的具体问题并希望得到答案 我在 Mac 上安装 Pygame 时遇到了难以置信的困难 我使用 Enthought 版本 EPD 7 3 2 32 位 它是我的默认框
  • 使用 python 将文本发送到带有逗号分隔符的列

    如何使用分隔符 在 Excel 中将一列分成两列 并使用 python 命名标题 这是我的代码 import openpyxl w openpyxl load workbook DDdata xlsx active w active a a
  • 在pycharm中调试python代码

    这个问题类似于this https stackoverflow com questions 10240018 how to use pycharm to debug python script一 我正在尝试调试pyethapp https
  • 是否可以强制浮点数的指数或有效数匹配另一个浮点数(Python)?

    这是我前几天试图解决的一个有趣的问题 是否可以强制一个的有效数或指数float与另一个人一样float在Python中 出现这个问题是因为我试图重新调整一些数据 以便最小值和最大值与另一个数据集匹配 然而 我重新调整后的数据略有偏差 大约小
  • asyncio - 多次等待协程(周期性任务)

    我正在尝试为异步事件循环创建定期任务 如下所示 但是我收到 RuntimeError 无法重用已等待的协程 异常 显然 asyncio 不允许等待相同的可等待函数 如中讨论的这个错误线程 https bugs python org issu
  • 如何在单独的文件中使用 FastAPI Depends 作为端点/路由?

    我在单独的文件中定义了一个 Websocket 端点 例如 from starlette endpoints import WebSocketEndpoint from connection service import Connectio
  • 将 Scikit-Learn OneHotEncoder 与 Pandas DataFrame 结合使用

    我正在尝试使用 Scikit Learn 的 OneHotEncoder 将 Pandas DataFrame 中包含字符串的列替换为 one hot 编码的等效项 我的下面的代码不起作用 from sklearn preprocessin
  • 如何在SqlAlchemy中执行“左外连接”

    我需要执行这个查询 select field11 field12 from Table 1 t1 left outer join Table 2 t2 ON t2 tbl1 id t1 tbl1 id where t2 tbl2 id is
  • 将此 MATLAB 代码转换为 Python 时我做错了什么?

    我正在努力将生成波形的 MATLAB 代码转换为 Python 就上下文而言 这是原子力显微镜带激发响应的模拟 与代码错误无关 在 MATLAB 中从 r vec 生成的图形与我在 Python 中生成的图形不同 我是否正确地将 MATLA

随机推荐

  • Vue----双向绑定指令

    文章目录 3 7 双向绑定指令 3 7 1 v model 指令的修饰符 3 7 双向绑定指令 vue提供了 v model双向绑定指令 用来辅助开发者在 不操作DOM 的前提下 快速 获取表单数 据
  • 使用idea自带的maven插件配置镜像

    一 选择idea自带maven路径 setting文件的位置选择 二 打开setting文件 三 修改maven的镜像
  • 华为HCIE云计算之Fusion Access桌面云

    华为HCIE云计算之Fusion Access桌面云 一 Fusion Access介绍 二 华为Fusion Access架构 1 Fusion Access桌面云解决方案逻辑架构 2 FusionSphere云平台架构 三 Fusion
  • 【无人机分配】一种无人机实时最优任务分配模型附matlab代码

    作者简介 热爱科研的Matlab仿真开发者 修心和技术同步精进 matlab项目合作可私信 个人主页 Matlab科研工作室 个人信条 格物致知 更多Matlab仿真内容点击 智能优化算法 神经网络预测 雷达通信 无线传感器 信号处理 图像
  • 不能看到共享的服务器文件夹,服务器不能共享文件夹

    服务器不能共享文件夹 内容精选 换一换 VPC为弹性云服务器构建隔离的 用户自主配置和管理的虚拟网络环境 提升用户云中资源的安全性 简化用户的网络部署 使用弹性文件服务时 文件系统和云服务器归属于同一VPC下才能文件共享 VPC可以通过网络
  • Java发送HTTP的get,post请求(JSON)

    import net sf json JSONObject import org apache commons httpclient import org apache commons httpclient methods GetMetho
  • 2020-09-06

    Elasticsearch Elasticsearch 简称ES 是一个可分布式的实时搜索和分析引擎 一个建立在全文搜索引擎 一个建立在全文搜索引擎Apache Lucence基础上的搜索引擎 它不仅可以进行全文搜素 还可以进行以下工作 分
  • centos7 Docker化应用体验

    centos7 Docker化应用体验 环境分析 WordPress运行环境需要如下软件的支持 PHP 5 6 或 更新版本 MySQL 5 6 或 更新版本 Apache 和 mod rewrite 模块 下载应用镜像 下载mariadb
  • RobotFramework-ride自动化操作教程

    一丶启动robotframework 启动RIDE 打开用例文件 找到文件位置 gt 选择文件 查看资源文件 确保用例所需资源文件当前目录都存在 三 用例编写 执行 新增用例 2 执行用例 勾选要执行的用例 点击run tests 或者 F
  • 浅谈漏洞及其分类

    浅谈漏洞及其分类 一 漏洞概念 漏洞是指一个系统上硬件 软件 协议等具体实现或系统安全策略上存在的弱点或缺陷 系统对特定威胁攻击或危险事件的敏感性 或进行攻击的威胁作用的可能性 这些缺陷 错误或不合理之处可能被有意或无意地利用 可以使攻击者
  • python中unexpected indent报错的解决办法

    python中unexpected indent报错的解决办法 在我们初步学习pyton的时候 由于对python语言的学习掌握不充分 则会导致所编写的代码 运行时候报错 比如 容易报错的unexpected indent问题 下面举例说明
  • Mybatis多对多查询+PageHelpler分页问题

    多对多查询 说明 tb user用户表 tb role角色表 tb user role用户角色关联表 实现表数据的多对多查询并返回 使用PageHelper对查询结果分页 用户表 Data NoArgsConstructor AllArgs
  • 想学好python?这18条学习技巧你一定要掌握。能甩别人两条街。

    在这篇文章中 我们将讨论最常用的python技巧 大多数这些技巧都是我在日常工作中使用过的简单的Trick 我觉得好东西就是要拿出来和大家一起分享 闲话少说 我们直接开始吧 处理用户的多个输入 有时我们需要从用户那里获得多个输入 以便使用循
  • 手把手教你在Tensorflow实现BEGAN 达到惊人的人脸图像生成效果

    导读 本文是基于谷歌大脑 Google Brain 发表在 arXiv 的最新论文 BEGAN 边界平衡生成对抗网络 实现的 该工作针对GAN 面临的一些难题 例如如何衡量收敛 如何控制分布多样性以及如何维持鉴别器和生成器之间的平衡等问题
  • Lock锁

    Lock实现提供比使用synchronized方法和语句可以获得的更广泛的锁定操作 它们允许更灵活的结构化 可能具有完全不同的属性 并且可以支持多个相关联的对象Condition 1 传统的synchronized package cn d
  • c语言(从入门到放弃?NONONO,LET我们一步一步刨析,会发现其中蕴含的乐趣)

    大家刚入门的时候通常会觉得c语言怎么怎么难学 听别人说指针多么多么难懂 深入学习的人的头发如何如何的稀少 然而我们只需要一步一步了解 一步一步刨析 会发现学习c语言也是具有许多乐趣的 接下来我们正式展开对C语言的简单了解咯 目录 一 让我们
  • Qt-信号和槽中使用自定义数据类型

    QT如果要在信号中使用自定义类型 需要首先调用qRegisterMetaType函数 语句类似 qRegisterMetaType
  • NOIP1998普及组复赛第二题 贰的幂方 解题报告

    问题描述 任何一个正整数都可以用 2 的幂次方表示 例如 137 27 23 20 在这里我们约定次方用括号来表示 即 ab 可表示为 a b 由上面叙述可知 137 又可以表示为 2 7 2 3 2 0 进一步 7 22 2 20 2 2
  • 游戏开发unity 3d知识系列:(一)用mesh绘制一个三角形网格

    国内讲解这些基础的感觉比较少 在youtube上看到一个比较好的视频 https www youtube com watch v eJEpeUH1EMg
  • Python抓取网页中的超链接以及其文本

    0 准备工作 读入网页加以解析抓取 需要用到的软件包是 requests html 我们此处并不需要这个软件包的全部功能 只读入其中的 HTMLSession 就可以 from requests html import HTMLSessio