获取当前页面的所有链接的四种方法对比(python 爬虫)
'''
得到当前页面所有连接
''' import requests import re
from bs4 import BeautifulSoup
from lxml import etree
from selenium import webdriver url = 'http://www.ok226.com'
r = requests.get(url)
r.encoding = 'gb2312' # 利用 re (太黄太暴力!)
matchs = re.findall(r"(?<=href=\").+?(?=\")|(?<=href=\').+?(?=\')" , r.text)
for link in matchs:
print(link) print() # 利用 BeautifulSoup4 (DOM树)
soup = BeautifulSoup(r.text,'lxml')
for a in soup.find_all('a'):
link = a['href']
print(link) print() # 利用 lxml.etree (XPath)
tree = etree.HTML(r.text)
for link in tree.xpath("//@href"):
print(link) print() # 利用selenium(要开浏览器!)
driver = webdriver.Firefox()
driver.get(url)
for link in driver.find_elements_by_tag_name("a"):
print(link.get_attribute("href"))
driver.close()
注意:若页面中含有 iframe,则 iframe 内所包含页面的所有标签都无法用以上四种方法获得!!!此时则要:
# 再打开所有iframe查找全部的a标签
for iframe in soup.find_all('iframe'):
url_ifr = iframe['src'] # 取得当前iframe的src属性值
rr = requests.get(url_ifr)
rr.encoding = 'gb2312'
soup_ifr = BeautifulSoup(rr.text,'lxml')
for a in soup_ifr.find_all('a'):
link = a['href']
m = re.match(r'http:\/\/.*?(?=\/)',link)
#print(link)
if m:
all_urls.add(m.group(0))
获取当前页面的所有链接的四种方法对比(python 爬虫)的更多相关文章
- JS获取当前页面的网址链接
JavaScript获取当前页面的URL .链接地址 var currUrl = decodeURIComponent(location.href.split('#')[0]); java获取方式:h ...
- html5 获取和设置data-*属性值的四种方法讲解
1.获取id的对象 2.需要获取的就是data-id 和 dtat-vice-id的值 一:getAttribute()方法 const getId = document.getElementById ...
- C# List 根据对象属性去重的四种方法对比
测试代码: private void TestDistinct() { Task.Run(() => { //生成测试数据 DateTime dt = DateTime.Now; Random ...
- 【Java必修课】通过Value获取Map中的键值Key的四种方法
1 简介 我们都知道Map是存放键值对<Key,Value>的容器,知道了Key值,使用方法Map.get(key)能快速获取Value值.然而,有的时候我们需要反过来获取,知道Value ...
- 通过Value获取Map中的键值Key的四种方法
1 简介 我们都知道Map是存放键值对<Key,Value>的容器,知道了Key值,使用方法Map.get(key)能快速获取Value值.然而,有的时候我们需要反过来获取,知道Value ...
- Python_selenium之获取当前页面的href属性,id属性,图片信息和截全屏
Python_selenium之获取当前页面的href属性,id属性,图片信息和截全屏 一. 获取当前页面的全部信息 1. 图片信息包括图片名称.图片大小等信息 2. 只需将图片信息打印出来(ima ...
- js获取当前页面的URL并且截取?之后的数据,返回json
js获取当前页面的URL并且截取'?'之后的数据,返回json格式的数据 最近想要把学到的东西整理一下,以后方便查找,也是一种自我累积,如果有错误或者更好的,欢迎提出! 这篇文档主要是写关于获取页面的 ...
- 从IE浏览器获取当前页面的内容
从IE浏览器获取当前页面内容可能有多种方式,今天我所介绍的是其中一种方法.基本原理:当鼠标点击当前IE页面时,获取鼠标的坐标位置,根据鼠标位置获取当前页面的句柄,然后根据句柄,调用win32的东西进而 ...
- js获取当前页面的url网址信息小汇总
在WEB开发中,时常会用到javascript来获取当前页面的url网址信息,在这里是我的一些获取url信息的小总结. 下面我们举例一个URL,然后获得它的各个组成部分:http://i.cnblog ...
随机推荐
- 机器学习数学知识中令人费解的notation符号注解
$argmin_xf(x), min(f(x))$ $min(f(x))$的意思是函数$f(x)$的最小值 $argmin$的意思是返回使得表达式取得最小值时对应的输入变量值.例如$argmin_xf ...
- EF实体对象解耦 - 泛型联表查询
为了达到模块间最小耦合,单模块业务数据不与其他模块发生关系.在操作数据库的时候,采用EF泛型操作.但泛型操作不好实现联表,经过一晚的试验发现了一种定义数据库上下文并联表的方式. 1.实体对象定义.实体 ...
- KHFlatButton
KHFlatButton https://github.com/kylehorn/KHFlatButton 效果: 对于自己做demo来说,每次设置button就不用这么折腾了,几句话就行了,非常爽: ...
- 设置邮箱发送服务|邮箱开始SMTP服务和腾讯云解封25端口的经验总结
原文链接: http://www.lookdaima.com/WebForms/WebPages/Blanks/Pm/Docs/DocItemDetail.aspx?id=7dfaaf63-d36f- ...
- oracle 启动报错ORA-27125解决方案
脚本: oracle@edwdb:~> id uid=(oracle) gid=(oinstall) (oinstall),(dba) oracle@edwdb:~> su - root ...
- Centos7 apache2.4.29(httpd) 安装
重点参考文章:https://blog.csdn.net/MrDing991124/article/details/78829184 写的很详细了,自己按着改博文走了不遍,不错! 一.配置安装环境 ...
- 自制年月选择插件 jquery.MyDatePicker v1.0beta
参数: el: null, //默认值和位置从哪个文本框取,传入jquery对象 ,默认为this 用于按钮引发文本框的focus事件来弹出 viewtype: 'month', //日期控件模式 默 ...
- 【教程】【FLEX】#004 反射机制
总结: 目前用到反射的主要有两个方法 1. getDefinitionByName //根据类名,返回对象(反射实例化对象) 2. describeType ...
- 使用python来搞定redis的订阅功能
好久没写博客了. 最近公司开了新项目,我负责的内容之一是系统的后端.具体项目内容我就不介绍了,但是用到的技术有些还是很有趣的,值得记录一下.今天介绍的就是其中一个:利用redis的pubsub订阅 ...
- myFocus 焦点图/轮播插件
最近产品突然就来个需求,要加轮播图,而且是立马要上线,于是乎发现了一个超级简便好用的轮播图插件myFocus,而且myFocus提供很多种风格,可以选择. 这里是使用说明 http://www.chh ...