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


猜你喜欢
- 介绍Python常见的字符串处理方式字符串截取 >>>s = 'hello'>>>s[0
- 在multiIndex中选定指定索引的行我们在用pandas类似groupby来使用多重index时,有时想要对多个level中的某个ind
- pyecharts产生背景Echarts是由百度开源的数据可视化,凭借良好的交互性和精巧的图表设计,得到众多开发者的认可,而python很适
- 金额大小写转换的asp完全无错版本, 这个版本解决了小数位不能到分的问题,处理方式符合会计方式,值得推荐!<!--#inc
- 在进行增强现实的时候我们需要用到两个工具包:PyGame 和 PyOpenGL,本章在python环境下对这两个工具包的安装进行说明。一、安
- 最近在做一个领券功能的时候,发现在一定并发下会出现重复领券的问题。使用度娘一顿搜索操作之后,发现可以使用分布式锁来解决这个问题。什么是分布式
- TIMESTAMP类型返回日期时间数据中带有 T场景描述MySQL 中使用 TIMESTAMP 类型实体类使用 java.util.Date
- 在Python程序中导入ctypes模块,载入动态链接库。动态链接库有三种:cdll以及windows下的windll和oledll,cdl
- 设计页面时,经常会从一个页面打开一个子窗口以供浏览者查看。通常,这种子窗口中的内容一经浏览者看过,对于浏览者而言就不再需要,而他们常常会忘记
- Python获取电脑截图有多种方式,具体如下:PIL中的ImageGrab模块windows APIPyQtpyautoguiPIL中的Im
- 本文实例讲述了Python实现的合并两个有序数组算法。分享给大家供大家参考,具体如下:思路按位循环比较两个数组,较小元素的放入新数组,下标加
- 1、快捷键win+r输入cmd回车调出cmd界面,在命令行输入python回车,显示python命令无法识别2、登陆python官网http
- 问题描述: 买了mac电脑,第一次装mysql,不知道初始密码,如何修改初始密码记录下。解决方式:htt
- 一、Django中路由的作用URL配置(URLconf)就像Django 所支撑网站的目录。它的本质是URL与要为该URL调用的视图函数之间
- 部署环境: jdk1.7mysql5.6tomcat7centos6.51资料准备 1)linux服务器,推荐使用阿里云,这里预算有限,所以
- 切片操作首先支持下标索引,通过[ N:M :P ]操作索引正向从0开始,逆向从-1开始N:切片开始位置M:切片结束位置(不包含)P:指定切片
- 需求如下: 1.模板页右边包含了一个登陆div,想让没登陆的时候这个div显示,登陆后该div隐藏 2.显示一个欢迎用户的div,主要是想通
- 目录正文开始1. DRF 中的限流2. 限流进阶配置3. 限流思路分析4. 源码分析5. 其它注意事项参考资料正文开始先说一个限流这个概念,
- 这个我早就改好了一直没有放上来.现在发给大家用用注意这几个变量它们影响到提示框的效果代码:var rT=true;//允许图像过渡
- 我们已经看到使用WHERE子句的SQL SELECT命令来从MySQL表获取数据。但是,当我们试图给的条件比较字段或列的值为NULL,它不能