首页 > 编程语言 >使用Python爬取给定网页的所有链接(附完整代码)

使用Python爬取给定网页的所有链接(附完整代码)

时间:2023-05-20 10:02:20浏览次数:40  
标签:网页 rq links Python BeautifulSoup 爬取 网页内容 data 链接

此脚本从给定的网页中检索所有链接,并将其保存为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” 的文件中。

运行截图

使用Python爬取给定网页的所有链接(附完整代码)_网页内容


使用Python爬取给定网页的所有链接(附完整代码)_开发语言_02



附完整代码

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)


标签:网页,rq,links,Python,BeautifulSoup,爬取,网页内容,data,链接
From: https://blog.51cto.com/haiyongblog/6317183

相关文章

  • python -- pandas常见的一些行、列操作方法(感兴趣的,可以跟着一起练练手)
     这篇文章分享一下pandas常见的一些行、列操作方法,比较基础,感兴趣的童鞋可以看看。 首先,我们用“random.seed(inti)” 生成一组测试数据。对于random.seed()有兴趣进一步了解的,可以前往阅读 python--numpy.random.seed() 如果“pipinstallpandas”遇到问题,可参考......
  • Python学习
    3-13字符串类型字符串类型:str   1.定义格式:       变量='内容'           打印一行       变量="内容"           打印一行       变量='''内容'''或者三引号           可以通过回车的方式换行,......
  • java调用python并且实现RESTAPI
    在Eclipse中创建springboot工程(maven)配置pom.xml<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocati......
  • python内置库--fileinput
    1关于fileinput利用fileinput,我们可以循环遍历标准输入或者多个文件中的数据它和open()作用很类似,但是open()只能操作一个文件且相关函数功能没有它丰富2函数介绍fileinput.input(files=None,inplace=False,backup='',*,mode='r',openhook=None,encoding=None,error......
  • Python自动化
    3-20数据类型转换数据类型转换:   1.int(x):x代指对象,返回值是一个整数类型,对象->整数       x为字符串:字符串应全为整数       x为小数:只保留整数部分       x不能是负数       x为布尔类型:True=1False=0   2.float(x):x......
  • Python自动化运维
    2-27在命令行窗口中启动的Python解释器中实现在Python自带的IDLE中实现print("Helloworld")编码规范每个import语句只导入一个模块,尽量避免一次导入多个模块不要在行尾添加分号“:”,也不要用分号将两条命令放在同一行建议每行不超过80个字符使用必要的空行可以增加代码的可读性运......
  • Python学习
    3-13字符串类型字符串类型:str   1.定义格式:       变量='内容'           打印一行       变量="内容"           打印一行       变量='''内容'''或者三引号           可以通过回车的方式换行,且打印出......
  • esp8266,arduino,网页显示dht11温湿度,控制继电器开关,局域网智能家居
    不说了,上代码,用arduino实现esp8266代码#include<ESP8266WiFi.h>#include<WiFiClient.h>#include<ESP8266WebServer.h>#include<SimpleDHT.h>//定义DHT11引脚//VCC:5Vor3V//GND:GND//DATA:2intpinDHT11=D4;SimpleDHT11......
  • python day07 字符串和列表的数据内置方法
    字符串的内置方法(较多,重要)lower(字符串全部转为小写)upper(字符串全部转为大写)#应用:验证码不区分大小写old_code='KeVin'print('这是返回给用户的验证码%s'%old_code)new_code=input('请输入你的验证码:').strip()print(new_code)ifnew_code.lower()==old_code.lowe......
  • 【python】【报错:pip中第三库下载成功,但是pycharm却没有显示】一步解决
     解决方案: 直接在这个目录下安装第三方库 ......