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 08 Python
MySQLdb ImportError: libmysqlclient.so.18解决方法
Aug 21 Python
python实现通过shelve修改对象实例
Sep 26 Python
在Python编程过程中用单元测试法调试代码的介绍
Apr 02 Python
理解生产者消费者模型及在Python编程中的运用实例
Jun 26 Python
python编程通过蒙特卡洛法计算定积分详解
Dec 13 Python
python实现简易通讯录修改版
Mar 13 Python
Python工程师必考的6个经典面试题
Jun 28 Python
python时间序列数据转为timestamp格式的方法
Aug 03 Python
Python filter过滤器原理及实例应用
Aug 18 Python
Python实现文本文件拆分写入到多个文本文件的方法
Apr 18 Python
python实现简单的井字棋
May 26 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
将兴奋、喜悦和坎加斯带到戴安娜:亚马逊公主
2020/03/03 欧美动漫
解析php中反射的应用
2013/06/18 PHP
php实现计数器方法小结
2015/01/05 PHP
php基于session实现数据库交互的类实例
2015/08/03 PHP
php有效防止同一用户多次登录
2015/11/19 PHP
php curl操作API接口类完整示例
2019/05/21 PHP
飞鱼(shqlsl) javascript作品集
2006/12/16 Javascript
用于自动添加Digg This!按钮的JavaScript
2006/12/23 Javascript
js 异步处理进度条
2010/04/01 Javascript
Javascript弹出窗口的各种方法总结
2013/11/11 Javascript
jQuery满意度星级评价插件特效代码分享
2015/08/19 Javascript
第一次接触Bootstrap框架
2016/10/24 Javascript
AngularJS创建自定义指令的方法详解
2016/11/03 Javascript
jQuery实现别踩白块儿网页版小游戏
2017/01/18 Javascript
Vue非父子组件通信详解
2017/06/12 Javascript
JS图片延迟加载插件LazyImgv1.0用法分析【附demo源码下载】
2017/09/04 Javascript
移动端效果之IndexList详解
2017/10/20 Javascript
vue.js根据代码运行环境选择baseurl的方法
2018/02/28 Javascript
JS动态插入脚本和插入引用外部链接脚本的方法
2018/05/21 Javascript
详解性能更优越的小程序图片懒加载方式
2018/07/18 Javascript
layui type2 通过url给iframe子页面传值的例子
2019/09/06 Javascript
LayUI数据接口返回实体封装的例子
2019/09/12 Javascript
vue修改Element的el-table样式的4种方法
2020/09/17 Javascript
NodeJS开发人员常见五个错误理解
2020/10/14 NodeJs
用python写一个windows下的定时关机脚本(推荐)
2017/03/21 Python
Python 多进程并发操作中进程池Pool的实例
2017/11/01 Python
使用Python编写Prometheus监控的方法
2018/10/15 Python
python 爬取疫情数据的源码
2020/02/09 Python
python中的django是做什么的
2020/07/31 Python
CSS3 实现弹幕的示例代码
2017/08/07 HTML / CSS
沙特阿拉伯网上购物:Sayidaty Mall
2018/05/06 全球购物
行政部总经理岗位职责
2014/01/04 职场文书
三年大学生活自我鉴定
2014/01/21 职场文书
活动总结格式范文
2014/04/26 职场文书
迎新生标语大全
2014/10/06 职场文书
四十九个javascript小知识实用技巧
2021/11/20 Javascript