Python爬虫如何获取页面内所有URL链接?本文详解

2023-11-17

如何获取一个页面内所有URL链接?在Python中可以使用urllib对网页进行爬取,然后利用Beautiful Soup对爬取的页面进行解析,提取出所有的URL。

什么是Beautiful Soup?

Beautiful Soup提供一些简单的、python式的函数用来处理导航、搜索、修改分析树等功能。它是一个工具箱,通过解析文档为用户提供需要抓取的数据,因为简单,所以不需要多少代码就可以写出一个完整的应用程序。

Beautiful Soup自动将输入文档转换为Unicode编码,输出文档转换为utf-8编码。你不需要考虑编码方式,除非文档没有指定一个编码方式,这时,Beautiful Soup就不能自动识别编码方式了。

BeautifulSoup支持Python标准库中的HTML解析器,还支持一些第三方的解析器,如果我们不安装它,则 Python 会使用 Python默认的解析器,lxml 解析器更加强大,速度更快。

全部代码:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

from bs4 import BeautifulSoup

import time,re,urllib2

t=time.time()

websiteurls={}

def scanpage(url):

  websiteurl=url

  t=time.time()

  n=0

  html=urllib2.urlopen(websiteurl).read()

  soup=BeautifulSoup(html)

  pageurls=[]

  Upageurls={}

  pageurls=soup.find_all("a",href=True)

  for links in pageurls:

    if websiteurl in links.get("href"and links.get("href") not in Upageurls and links.get("href") not in websiteurls:

      Upageurls[links.get("href")]=0

  for links in Upageurls.keys():

    try:

      urllib2.urlopen(links).getcode()

    except:

      print "connect failed"

    else:

      t2=time.time()

      Upageurls[links]=urllib2.urlopen(links).getcode()

      print n,

      print links,

      print Upageurls[links]

      t1=time.time()

      print t1-t2

    n+=1

  print ("total is "+repr(n)+" links")

  print time.time()-t

scanpage("http://news.163.com/")

利用BeautifulSoup还可以有针对性的获取网页链接:Python爬虫获取网页上的链接,通过beautifulsoup的findall()方法对匹配的标签进行查找。
最后注意:光理论是不够的。这里顺便送大家一套2020最新python入门到高级项目实战视频教程,可以去小编的Python交流.裙 :七衣衣九七七巴而五(数字的谐音)转换下可以找到了,还可以跟老司机交流讨教!

本文的文字及图片来源于网络加上自己的想法,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。

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

Python爬虫如何获取页面内所有URL链接?本文详解 的相关文章

随机推荐

  • 循环神经网络(RNN)的基本原理及LSTM的基本结构

    来源于课上实验 结果清晰 遂上传于此 实验环境TensorFlow1 14 该课件仅用于教学 请勿用于其他用途 详细参考 实验笔记 实验视频 一 实验目的 学习掌握循环神经网络 RNN 的基本原理及LSTM的基本结构 掌握利用LSTM神经元
  • vulfocus靶场安装教程

    背景 漏洞把场是目前每个安全人员以及想学习信息安全的人必备的东西 但目前商业化产品居多 还有一些类似dwwa sqlilabs这类的开源项目 但是漏洞环境比较固定 使用完一次后就失去其作用 搭建的成本过高 每次启动的流程会比较繁锁 甚至很多
  • 【react】对state的理解

    state是类创建的实例对象上的一个状态属性 想要改变类的实例对象的值 就要用到构造器 但由于类组件都是继承的React内置的Component类 继承的类 要写构造器的话 就必须写super 改变state this state xxx
  • TIP Spring-boot健康检查查看详细信息

    Spring boot提供了健康检查的手段 定期检查应用各个组件的状态 并提供了一些通用组件的检查 比如MySQL Redis等 可以使用下面的命令查看应用的健康状态 curl localhost port health 如果应用有异常 会
  • GhostNetV2学习笔记

    GhostNetV2学习笔记 GhostNetV2 Enhance Cheap Operation with Long Range Attention Abstract 轻量级卷积神经网络 CNNs 是专为在移动设备上具有较快推理速度的应用
  • Deployment Controller 典型使用场景

    1 重新调度 Rescheduling 不管想运行 1 个副本还是 1000 个副本 副本控制器都能确保指定数量的副本存在于集群中 即使发生节点故障或 Pod 副本被终止运行等意外状况 2 弹性伸缩 Scaling 手动或者通过自动扩容代理
  • 【科普】CRC校验(一)什么是CRC校验?

    目录 CRC 循环冗余校验 CRC 校验码的生成 CRC 的发送方与接收方 发送方 接收方 除法异或运算示意图 CRC 循环冗余校验 CRC Cyclic Redundancy Check 循环冗余检验 是一种用于检测数字数据错误的技术 作
  • 不用JS,教你只用纯HTML做出几个实用网页效果

    转载请注明出处 葡萄城官网 葡萄城为开发者提供专业的开发工具 解决方案和服务 赋能开发者 原文出处 https blog bitsrc io pure html widgets for your web application c90155
  • Python - 遍历列表

    方法1 for循环直接遍历 lists m1 1900 m2 2000 for item in lists print item 注 同JAVA中的foreach循环一样 用for循环遍历列表 并不能改变列表中的数据项的值 lists m1
  • 校验密码复杂度(规则:长度8-30,必须包含数字、字母、特殊符号)、校验用户名(规则:长度4-19,包含数字、字母,不包含特殊字符)

    校验密码复杂度 规则 长度8 30 必须包含数字 字母 特殊符号 校验用户名 规则 长度4 19 包含数字 字母 不包含特殊字符
  • RHEL8网络管理

    RHEL8网络管理服务 NetworkManager早期的设计目的是为了统一网络配置 表示以后所有的网络相关的配置都使用NetworkManager来实现 NetworkManager服务提供了3种工具用来配置网卡参数 都不需要去手动修改网
  • 【每日多题之贪心】

    文章目录 1 分割平衡字符串 1 1 题目描述 1 2 题目分析 1 3 代码实现 2 最少操作数使数组递增 2 1 题目描述 2 2 题目分析 2 3 代码实现 3 卡车上的最大单元数 3 1 题目描述 3 2 题目分析 3 3 代码实现
  • 使用UML编写Java应用程序

    引言 统一建模语言 Unified Modeling Language 简写为UML 是一种通用的模拟语言 它可以用于确定 展示和记录软件系统的设计过程 统一建模语言中的图形标记 尤其是用于面向对象的软件设计 它有两大优点 1 UML是国际
  • iframe添加loading效果

    问题 当一个页面嵌入iframe时 iframe加载会有延迟 即在iframe元素展现前 嵌入iframe的父页面会有一段白屏情况 用户感知不到iframe页面在加载 体验效果不是很好 解决方法 为了提升用户体验 让用户感知到当前页面在加载
  • FISCO BCOS离线搭建单机单群组4节点

    系列文章目录 第一章 FISCO BCOS在线搭建单机单群组4节点 文章目录 系列文章目录 前言 一 安装准备 1 安装依赖包 2 创建操作目录 3 下载脚本 三 搭建单群组4节点联盟链 1 暂停并清除FISCO BCOS 2 搭建区块链
  • Python实战

    逆向完美世界登录 js代码调试阶段 1 查看密码关键字段 2 Ctrl shift f全局搜索 password 找到相关js文件 3 从代码的setpublickey encrypt关键字可以看出 使用了非对称加密算法 4 此处打断点 再
  • ubuntu 使用FFTW快速计算离散傅里叶变换

    FFTW the Faster Fourier Transform in the West 是一个快速计算离散傅里叶变换的标准C语言程序集 其由MIT的M Frigo 和S Johnson 开发 可计算一维或多维实和复数据以及任意规模的DF
  • 解决Xilinx_ISE 14.7在Win10下选择“open project”崩溃闪退的问题

    解决Xilinx ISE 14 7在Win10下选择 open project 崩溃闪退的问题 问题描述 ISE 14 7对win10无法完美支持 在使用64位ISE时点击OPEN之类的东西时程序都会崩溃 虽然使用32位不会有这个问题 但是
  • nvidia-docker容器迁移导致GPU启动失败解决方案

    引言 起因是最近发现一个很有趣的问题 当我的docker容器迁移到另一台服务器去 因为GPU版本不一致导致项目启动是会报错为 CUDA error CUDA ERROR NO DEVICE no CUDA capable device is
  • Python爬虫如何获取页面内所有URL链接?本文详解

    如何获取一个页面内所有URL链接 在Python中可以使用urllib对网页进行爬取 然后利用Beautiful Soup对爬取的页面进行解析 提取出所有的URL 什么是Beautiful Soup Beautiful Soup提供一些简单