Python爬虫获取页面所有URL链接过程详解


Posted in Python onJune 04, 2020

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

什么是Beautiful Soup?

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

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

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

全部代码:

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()方法对匹配的标签进行查找。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python使用xauth方式登录饭否网然后发消息
Apr 11 Python
python中map()函数的使用方法示例
Sep 29 Python
python调用百度语音识别api
Aug 30 Python
Python3实现的判断环形链表算法示例
Mar 07 Python
python实现对输入的密文加密
Mar 20 Python
Python使用os.listdir()和os.walk()获取文件路径与文件下所有目录的方法
Apr 01 Python
python hashlib加密实现代码
Oct 17 Python
pygame实现打字游戏
Feb 19 Python
Python:合并两个numpy矩阵的实现
Dec 02 Python
django admin 根据choice字段选择的不同来显示不同的页面方式
May 13 Python
python中upper是做什么用的
Jul 20 Python
python3中for循环踩过的坑记录
Dec 14 Python
Python中的全局变量如何理解
Jun 04 #Python
使用OpenCV获取图片连通域数量,并用不同颜色标记函
Jun 04 #Python
Python urllib2运行过程原理解析
Jun 04 #Python
Python如何生成xml文件
Jun 04 #Python
基于python代码批量处理图片resize
Jun 04 #Python
Python脚本如何在bilibili中查找弹幕发送者
Jun 04 #Python
Python爬虫谷歌Chrome F12抓包过程原理解析
Jun 04 #Python
You might like
3个PHP多维数组转为一维数组的方法实例
2014/03/13 PHP
php绘图之生成饼状图的方法
2015/01/24 PHP
php读取和保存base64编码的图片内容
2017/04/22 PHP
PHP读取Excel类文件
2017/05/15 PHP
解决laravel中日志权限莫名变成了root的问题
2019/10/17 PHP
JS打印gridview实现原理及代码
2013/02/05 Javascript
JavaScript对象创建及继承原理实例解剖
2013/02/28 Javascript
js与jQuery 获取父窗、子窗的iframe
2013/12/20 Javascript
js实现左侧网页tab滑动门效果代码
2015/09/06 Javascript
jQuery移动web开发中的页面初始化与加载事件
2015/12/03 Javascript
JavaScript数组的一些奇葩行为
2016/01/25 Javascript
jQuery实现图片加载完成后改变图片大小的方法
2016/03/29 Javascript
js实现上传图片及时预览
2016/05/07 Javascript
JS组件Bootstrap Table布局详解
2016/05/27 Javascript
Bootstrap模态框(modal)垂直居中的实例代码
2016/08/18 Javascript
js 转义字符及URI编码详解
2017/02/28 Javascript
利用Javascript裁剪图片并存储的简单实现
2017/03/13 Javascript
easyui-edatagrid.js实现回车键结束编辑功能的实例
2017/04/12 Javascript
Angular CLI在Angular项目中如何使用scss详解
2018/04/10 Javascript
jQuery实现判断上传图片类型和大小的方法示例
2018/04/11 jQuery
CKEditor 4.4.1 添加代码高亮显示插件功能教程【使用官方推荐Code Snippet插件】
2019/06/14 Javascript
layui加载数据显示loading加载完成loading消失的实例代码
2019/09/23 Javascript
Python中的True,False条件判断实例分析
2015/01/12 Python
PyGame贪吃蛇的实现代码示例
2018/11/21 Python
Django页面数据的缓存与使用的具体方法
2019/04/23 Python
详解python 爬取12306验证码
2019/05/10 Python
pandas DataFrame 警告(SettingWithCopyWarning)的解决
2019/07/23 Python
VSCode中自动为Python文件添加头部注释
2019/11/14 Python
解决python彩色螺旋线绘制引发的问题
2019/11/23 Python
Python 必须了解的5种高级特征
2020/09/10 Python
德国净水壶和滤芯品牌:波尔德PearlCo(家用净水器)
2020/04/29 全球购物
大四学生毕业自荐信
2013/11/07 职场文书
分公司任命书
2014/06/06 职场文书
公司人事专员岗位职责
2014/08/11 职场文书
团员个人年度总结
2015/02/26 职场文书
护士岗位竞聘书
2015/09/15 职场文书