Python 爬虫篇-爬取web页面所有可用的链接实战演示,展示网页里所有可跳转的链接地址
时间:2022-07-25
本文章向大家介绍Python 爬虫篇-爬取web页面所有可用的链接实战演示,展示网页里所有可跳转的链接地址,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
原理也很简单,html 链接都是在 a 元素里的,我们就是匹配出所有的 a 元素,当然 a 可以是空的链接,空的链接是 None,也可能是无效的链接。
我们通过 urllib 库的 request 来测试链接的有效性。 当链接无效的话会抛出异常,我们把异常捕获出来,并提示出来,没有异常就是有效的,我们直接显示出来就好了。
需要用到的技术: python+selenium python+selenium 基本环境搭建
urllib.request 这是 python 自带的,直接就可以使用。
# -*- coding: GBK -*-
from selenium import webdriver
import urllib.request
from urllib.request import URLError
# 调用chrome浏览器并后台运行
option=webdriver.ChromeOptions()
option.add_argument('headless')
driver = webdriver.Chrome(chrome_options=option)
driver.get("http://www.tencent.com/") # 要测试的页面
urls = driver.find_elements_by_xpath("//a") # 匹配出所有a元素里的链接
print("当前页面的可用链接如下:")
for url in urls:
u=url.get_attribute('href')
if u == 'None': # 很多的a元素没有链接,所有是None
continue
try:
response=urllib.request.urlopen(url.get_attribute("href")) # 可以通过urllib测试url地址是否能打开
except:
print('Error url: ' + url.get_attribute('href')) # 把测试不通过的url显示出来
else:
print(url.get_attribute("href")) # 测试通过的url展示出来
driver.close()
运行成功效果图:
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- matlab学习笔记11_3 高维数组处理 filp, shiftdim, size, permute, ipermute
- 看完这篇文章,你的Linux基础就差不多了
- jzy3D从入门到弃坑
- git丢弃本地修改的所有文件(新增、删除、修改)
- Jmetal设置Solution Variables
- git log 查看某文件的修改历史
- 进程和线程的概念、区别和联系
- CDATA和转义字符
- 递归解决全排列问题
- 支付的时候的参数校验
- PHP函数库之BC高精确度函数库
- php的精度计算问题(bcadd和bcsub)
- 基于 CheckList 的 NLP 模型行为测试
- PyTorch 60-Minute Blitz
- 一起来学演化计算-matlab@(x)构造匿名函数