获取当前页面的所有链接的三种方法对比(python 爬虫)

‘‘‘
得到当前页面所有连接
‘‘‘

import requests

import re
from bs4 import BeautifulSoup
from lxml import etree

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)
时间: 2024-11-05 15:08:01

获取当前页面的所有链接的三种方法对比(python 爬虫)的相关文章

javascript获取数组最后一个元素(三种方法)

JavaScript 获取Array末尾元素 一.JavaScript pop() 方法 pop() 方法用于删除并返回数组的最后一个元素. 注意:pop() 方法将删除 arrayObject 的最后一个元素,把数组长度减 1,并且返回它删除的元素的值.如果数组已经为空,则 pop() 不改变数组,并返回 undefined 值. var arr = new Array("js","JavaScript","jQuery"); var end

获取View的宽高的三种方法

来自为知笔记(Wiz)

C# 处理图像三种方法对比

C#本身自带有一定的图像处理能力,即使在不依赖Emgu CV的情况下,也是有很大的潜质的. 不过,最近在处理大量图片时,发现图片数量较少时,处理本身所带来的延时不会让人敏感,但是数量较大时,程序花费大量时间在预处理图片上,导致程序很容易误报线程时延过大,导致误判程序异常.对于这个问题苦恼很久,毕竟不是CS专业出身,对于图像处理以及一些算法和库的运用上感到毕竟吃力. 今天在阅读了一些数字图像处理的书之后感到收益很大,现在来做点试验对照一下之前自己的错误在哪里. 之前看MS的C#API时候发现有一个

Sql 列转行 三种方法对比

合并列值 --******************************************************************************************* 表结构,数据如下: id    value ----- ------ 1    aa 1    bb 2    aaa 2    bbb 2    ccc 需要得到结果: id    values ------ ----------- 1      aa,bb 2      aaa,bbb,ccc 即

初窥Python(四)——三种方法判断python变量类型

python 是动态语言,定义变量时不用指定变量类型,在代码执行过程中,会根据变量的值确定变量类型.python 中常用的变量类型有 int  float  long  bool  str  list  tuple set dict 等,常用的变量类型的有 types 库及内置的 type(object) 和 isinstance(object,class-or-type-or-tuple) 方法,下面分别来看一下如何通过这些方法进行变量类型的判断. 1.使用types库结合type(objec

js获取当前页面的url网址信息小汇总

在WEB开发中,时常会用到javascript来获取当前页面的url网址信息,在这里是我的一些获取url信息的小总结. 下面我们举例一个URL,然后获得它的各个组成部分:http://i.cnblogs.com/EditPosts.aspx?opt=1 1.window.location.href(设置或获取整个 URL 为字符串) var test = window.location.href; alert(test); 返回:http://i.cnblogs.com/EditPosts.as

JavaScript获取当前页面的用户区宽高问题

在网页的前端开发中,我们常常会涉及到自适应宽度,也就是说我们希望页面总是满宽显示.在这个过程中为了获得更好的用户体验和跨浏览器的兼容性,我们会在不同的用户区分辨率下实时载入不同的CSS文件,当然这就涉及到获取用户区的宽度(最主要是宽度). 在javascript中,可以通过访问window.innerWidth,window.innerHeight和document.documentElement.clientWidth,document.documentElement.clientHeight

ASP.net获取当前页面的文件名,参数,域名等方法

ASP.net后台获取当前页面的文件名 System.IO.Path.GetFileName(Request.Path).ToString(); 获取当前页面文件名,参数,域名等方法 假设当前页完整地址是:http://www.test.com/aaa/bbb.aspx?id=5&name=kelli "http://"是协议名 "www.test.com"是域名 "aaa"是虚拟目录名 "bbb.aspx"是页面名(

Java中获取键盘输入值的三种方法

Java中获取键盘输入值的三种方法     Java程序开发过程中,需要从键盘获取输入值是常有的事,但Java它偏偏就没有像c语言给我们提供的scanf(),C++给我们提供的cin()获取键盘输入值的现成函数!Java没有提供这样的函数也不代表遇到这种情况我们就束手无策,请你看以下三种解决方法吧: 以下将列出几种方法: 方法一:从控制台接收一个字符,然后将其打印出来 import java.io.*; public static void main(String [] args) throws