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实现猜数字游戏(无重复数字)示例分享
Mar 29 Python
Python全局变量操作详解
Apr 14 Python
机器学习经典算法-logistic回归代码详解
Dec 22 Python
Python线性拟合实现函数与用法示例
Dec 13 Python
django模板加载静态文件的方法步骤
Mar 01 Python
Windows10下 python3.7 安装 facenet的教程
Sep 10 Python
python matplotlib拟合直线的实现
Nov 19 Python
Tensorflow 实现释放内存
Feb 03 Python
Python3 assert断言实现原理解析
Mar 02 Python
python 读txt文件,按‘,’分割每行数据操作
Jul 05 Python
Keras在mnist上的CNN实践,并且自定义loss函数曲线图操作
May 25 Python
python基础之类方法和静态方法
Oct 24 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
解析如何在PHP下载文件名中解决乱码的问题
2013/06/20 PHP
CodeIgniter与PHP5.6的兼容问题
2015/07/16 PHP
JS input文本框禁用右键和复制粘贴功能的代码
2010/04/15 Javascript
ExtJS4 组件化编程,动态加载,面向对象,Direct
2011/05/12 Javascript
jquery插件冲突(jquery.noconflict)解决方法分享
2014/03/20 Javascript
jQuery简单图表peity.js使用示例
2014/05/02 Javascript
java、javascript实现附件下载示例
2014/08/14 Javascript
jQuery实现可展开合拢的手风琴面板菜单
2015/09/15 Javascript
Bootstrap入门书籍之(零)Bootstrap简介
2016/02/17 Javascript
原生javascript实现匀速运动动画效果
2016/02/26 Javascript
基于jquery实现轮播焦点图插件
2016/03/31 Javascript
微信JS-SDK坐标位置如何转换为百度地图坐标
2016/07/04 Javascript
AngularJS表格详解及示例代码
2016/08/17 Javascript
JS小数转换为整数的方法分析
2017/01/07 Javascript
Bootstrap table表格简单操作
2017/02/07 Javascript
微信小程序实现点击按钮移动view标签的位置功能示例【附demo源码下载】
2017/12/06 Javascript
vue中子组件向父组件传递数据的实例代码(实现加减功能)
2018/04/20 Javascript
jQuery实现表单动态添加数据并提交的方法
2018/07/19 jQuery
ES2020 已定稿,真实场景案例分析
2020/05/25 Javascript
Vue封装全局过滤器Filters的步骤
2020/09/16 Javascript
python使用正则表达式提取网页URL的方法
2015/05/26 Python
python获得文件创建时间和修改时间的方法
2015/06/30 Python
对pandas读取中文unicode的csv和添加行标题的方法详解
2018/12/12 Python
python 获取图片分辨率的方法
2019/01/08 Python
使用Python3内置文档高效学习以及官方中文文档
2019/05/19 Python
python之yield和Generator深入解析
2019/09/18 Python
python实现发送带附件的邮件代码分享
2020/09/22 Python
浅析python 字典嵌套
2020/09/29 Python
浅谈CSS3 box-sizing 属性 有趣的盒模型
2019/04/02 HTML / CSS
荷兰多品牌网上鞋店:Stoute Schoenen
2017/08/24 全球购物
幼儿如何来做好自我评价
2013/11/05 职场文书
意向协议书范本
2014/04/23 职场文书
趣味运动会广播稿
2014/09/13 职场文书
教师个人事迹材料
2014/12/17 职场文书
如何利用opencv判断两张图片是否相同详解
2021/07/07 Python
MongoDB误操作后使用oplog恢复数据
2022/04/11 MongoDB