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之做一个小游戏
Sep 28 Python
Python抓取聚划算商品分析页面获取商品信息并以XML格式保存到本地
Feb 23 Python
python监控进程脚本
Apr 12 Python
根据DataFrame某一列的值来选择具体的某一行方法
Jul 03 Python
Python面向对象程序设计之继承与多继承用法分析
Jul 13 Python
Python Matplotlib实现三维数据的散点图绘制
Mar 19 Python
使用Python正则表达式操作文本数据的方法
May 14 Python
python 使用plt画图,去除图片四周的白边方法
Jul 09 Python
如何利用Python开发一个简单的猜数字游戏
Sep 22 Python
Python matplotlib修改默认字体的操作
Mar 05 Python
python将音频进行变速的操作方法
Apr 08 Python
详解Python IO编程
Jul 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+mongodb判断坐标是否在指定多边形区域内的实例
2016/10/28 PHP
javascript 限制输入和粘贴(IE,firefox测试通过)
2008/11/14 Javascript
JQUERY 对象与DOM对象之两者相互间的转换
2009/04/27 Javascript
input 输入框内的输入事件详细分析
2010/03/17 Javascript
uploadify在Firefox下丢失session问题的解决方法
2013/08/07 Javascript
node.js中的buffer.slice方法使用说明
2014/12/10 Javascript
多个jQuery版本共存的处理方案
2015/03/17 Javascript
基于jQuery和CSS3制作响应式水平时间轴附源码下载
2015/12/20 Javascript
简单谈谈Javascript函数中的arguments
2017/02/09 Javascript
微信小程序 跳转传递数据的实例
2017/07/06 Javascript
Angularjs中的$apply及优化使用详解
2018/07/02 Javascript
vue-cli 3.x 配置Axios(proxyTable)跨域代理方法
2018/09/19 Javascript
使用Sonarqube扫描Javascript代码的示例
2018/12/26 Javascript
详解nvm管理多版本node踩坑
2019/07/26 Javascript
layui 富文本编辑器和textarea值的相互传递方法
2019/09/18 Javascript
如何配置vue.config.js 处理static文件夹下的静态文件
2020/06/19 Javascript
在vue中对数组值变化的监听与重新响应渲染操作
2020/07/17 Javascript
vue a标签点击实现赋值方式
2020/09/07 Javascript
[39:52]2018DOTA2亚洲邀请赛 4.3 突围赛 EG vs Newbee 第一场
2018/04/04 DOTA
Python操作SQLite简明教程
2014/07/10 Python
在Python的Flask框架中实现单元测试的教程
2015/04/20 Python
Python3导入自定义模块的三种方法详解
2018/04/13 Python
python SMTP实现发送带附件电子邮件
2018/05/22 Python
python求最大连续子数组的和
2018/07/07 Python
Django框架文件上传与自定义图片上传路径、上传文件名操作分析
2019/05/10 Python
python BlockingScheduler定时任务及其他方式的实现
2019/09/19 Python
基于python连接oracle导并出数据文件
2020/04/28 Python
利用scikitlearn画ROC曲线实例
2020/07/02 Python
搭建pypi私有仓库实现过程详解
2020/11/25 Python
怀俄明州飞钓:Platte River Fly Shop
2017/12/28 全球购物
jurlique茱莉蔻英国官网:澳洲天然护肤品
2018/08/03 全球购物
PHP面试题集
2016/12/18 面试题
大学生英语演讲稿
2014/04/24 职场文书
党的群众路线教育实践活动个人对照检查材料(企业)
2014/11/05 职场文书
您对思维方式了解多少?
2019/12/09 职场文书
PostgreSQL存储过程实用脚本(二):创建函数入门
2021/04/05 PostgreSQL