Python实现提取给定网页内的所有链接
作者:海拥 发布时间:2022-03-29 19:01:11
此脚本从给定的网页中检索所有链接,并将其保存为txt文件。(文末有完整源码)
这是一个简单的网络爬虫示例,使用了 requests 库来发送 HTTP 请求并获取网页内容,使用 BeautifulSoup 库来解析网页内容。
代码解释如下:
1.导入所需的库
导入 requests 库并将其重命名为 rq,用于发送 HTTP 请求和获取网页内容。
import requests as rq
从 bs4 库导入 BeautifulSoup 类,用于解析 HTML 内容。
from bs4 import BeautifulSoup
2.获取用户输入的链接
提示用户输入一个链接,并将其保存在 url 变量中。
url = input("Enter Link: ")
3.发送 HTTP 请求获取网页内容
使用条件语句判断用户输入的链接是否以 "
https
" 或 "http
" 开头。如果是,则使用
rq.get(url)
发送 GET 请求获取网页内容,并将响应保存在 data 变量中。如果不是,则在链接前添加 "https://" 并使用
rq.get()
发送请求,将响应保存在 data 变量中。
4.使用 BeautifulSoup 解析网页内容
将 data.text(网页内容)传递给 BeautifulSoup 类的构造函数,指定解析器为 "html.parser",创建一个 BeautifulSoup 对象 soup。
soup = BeautifulSoup(data.text, "html.parser")
5.提取链接
创建一个空列表 links 用于存储提取的链接。
使用 soup.find_all("a") 查找网页中所有的
<a>
标签,并返回一个包含这些标签的列表。遍历列表中的每个标签,使用 link.get("href") 获取每个标签中的 "href" 属性值,并将其添加到 links 列表中。
6.将提取的链接写入文件
使用
with open("myLinks.txt", 'a') as saved
: 打开一个文件 "myLinks.txt",以追加模式。使用
print(links[:100], file=saved)
将 links 列表中的前 100 个链接写入文件中,每个链接占一行。如果需要每次覆盖文件内容而不是追加,可以将文件打开模式由 'a' 改为 'w'。
这段代码的功能是获取用户输入的链接对应网页中的前 100 个链接,并将这些链接写入到名为 "myLinks.txt" 的文件中。
运行截图
附完整代码
import requests as rq
from bs4 import BeautifulSoup
url = input("Enter Link: ")
if ("https" or "http") in url:
data = rq.get(url)
else:
data = rq.get("https://" + url)
soup = BeautifulSoup(data.text, "html.parser")
links = []
for link in soup.find_all("a"):
links.append(link.get("href"))
# 将输出写入文件(myLinks.txt)
# 可以将“a”更改为“w”以每次覆盖文件
with open("myLinks.txt", 'a') as saved:
print(links[:10], file=saved)
来源:https://juejin.cn/post/7233995529692839993
猜你喜欢
- 1.cURL介绍 cURL 是一个利用URL语法规定来传输文件和数据的工具,支持很多协议,如HTTP、FTP、TELNET等。最爽的是,PH
- 今天我们来学习一下 异常语法 中的另一个成员 —> finally ; 通过学习 finally ,可以帮助我们更
- SQLSTATESQL SERVER 驱动程序错误描述 HY000所有绑定列都是只读的。必须是可升级的列,以使用 SQLSetPos 或 S
- 本文实例讲述了JS实现仿Windows经典风格的选项卡Tab切换代码。分享给大家供大家参考,具体如下:这款仿Windows风格的选项卡,带有
- tkinter改变下拉列表(Combobox)的选项值定义下拉列表:# 此处省略父容器的定义 ... # 定义下拉列表
- php屏蔽电话号码中间四位:Method 1:function hidtel($phone){  
- 简单的header import urllib2request = urllib2.Request('http://example.
- 现在有一个xml,格式如下: 代码如下:<date> <item> <id>&nbs
- 1.lower()将字符串中的大写字母转换成小写字母语法:str.lower()#举例:str1 = "LiBai is a bo
- 如下所示:result = result.T.sort(['confidence','support'],
- QMainWindowQMainWindow类中比较重要的方法方法描述addToolBar()添加工具栏centralWidge()返回窗口
- 写ASP程序时,一般情况总是使用的VBScript,不过也不只是这一种选择,也可以用JScript。但在用JScript作为ASP的语言时,
- 回收站(Recycle Bin)从原理上来说就是一个数据字典表,放置用户删除(drop)掉的数据库对象信息。用户进行删除操作的对象并没有被数
- 本文实例讲述了python类和继承定义与用法。分享给大家供大家参考。具体如下:class Employee: passlee =
- 马上就是圣诞节了,先提前祝大家圣诞快乐!:christmas_tree::christmas_tree::christmas_t
- 索引( Index )是常见的数据库对象,它的设置好坏、使用是否得当,极大地影响数据库应用程序和Database 的性能。虽然有许多资料讲索
- 本文实例讲述了php实现压缩多个CSS与JS文件的方法。分享给大家供大家参考。具体实现方法如下:1. 压缩css<?php
- 最近朋友需要一个可以识别图片中的文字的程序,以前做过java验证码识别的程序;刚好最近在做一个python项目,所以顺便用Python练练手
- 前言在任何编程语言中,代码需要根据不同的条件在给定的输入中做不同的决定和执行相应的动作。例如,在一个游戏中,如果玩家生命点为0,游戏结束。在
- 前言在golang当中,defer代码块会在函数调用链表中增加一个函数调用。这个函数调用不是普通的函数调用,而是会在函数正常返回,也就是re