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单元测试框架unittest使用方法讲解
Apr 13 Python
Python基于回溯法子集树模板解决取物搭配问题实例
Sep 02 Python
简单谈谈python基本数据类型
Sep 26 Python
Pycharm+Scrapy安装并且初始化项目的方法
Jan 15 Python
python实现公司年会抽奖程序
Jan 22 Python
Python 导入文件过程图解
Oct 15 Python
使用python的turtle绘画滑稽脸实例
Nov 21 Python
python 实现一个反向单位矩阵示例
Nov 29 Python
使用wxpy实现自动发送微信消息功能
Feb 28 Python
Python小白垃圾回收机制入门
Jun 09 Python
python中return如何写
Jun 18 Python
python入门教程之基本算术运算符
Nov 13 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 获取完整url地址
2008/12/20 PHP
PHP统计数值数组中出现频率最多的10个数字的方法
2015/04/20 PHP
由prototype_1.3.1进入javascript殿堂-类的初探
2006/11/06 Javascript
JavaScript asp.net 获取当前超链接中的文本
2009/04/14 Javascript
使用JavaScript判断图片是否加载完成的三种实现方式
2014/05/04 Javascript
js实现的类似于asp数据字典的数据类型代码实例
2014/09/03 Javascript
跟我学习javascript的执行上下文
2015/11/18 Javascript
JS使用单链表统计英语单词出现次数
2016/06/16 Javascript
JavaScript中闭包的写法和作用详解
2016/06/29 Javascript
jQuery如何封装输入框插件
2016/08/19 Javascript
js利用clipboardData实现截屏粘贴功能
2016/10/12 Javascript
JS键盘版计算器的制作方法
2016/12/03 Javascript
jQuery插件HighCharts绘制2D柱状图、折线图和饼图的组合图效果示例【附demo源码下载】
2017/03/09 Javascript
vue+vuecli+webpack中使用mockjs模拟后端数据的示例
2017/10/24 Javascript
javascript面向对象三大特征之多态实例详解
2019/07/24 Javascript
微信小程序以7天为周期连续签到7天功能效果的示例代码
2020/08/20 Javascript
[01:04:30]Fnatic vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
python线程锁(thread)学习示例
2013/12/04 Python
Python2实现的图片文本识别功能详解
2018/07/11 Python
python write无法写入文件的解决方法
2019/01/23 Python
Python学习笔记之字符串和字符串方法实例详解
2019/08/22 Python
python图形开发GUI库pyqt5的详细使用方法及各控件的属性与方法
2020/02/14 Python
windows、linux下打包Python3程序详细方法
2020/03/17 Python
细说NumPy数组的四种乘法的使用
2020/12/18 Python
Python解析m3u8拼接下载mp4视频文件的示例代码
2021/03/03 Python
详解CSS3 rem(设置字体大小) 教程
2017/11/21 HTML / CSS
Html5实现二维码扫描并解析
2016/01/20 HTML / CSS
澳大利亚宠物商店:Petbarn
2017/11/18 全球购物
新闻专业个人求职信
2013/12/19 职场文书
简历中个人自我评价分享
2014/03/15 职场文书
上课随便讲话检讨书
2014/09/12 职场文书
乡镇遵守党的政治纪律情况对照检查材料
2014/09/26 职场文书
团结友爱主题班会
2015/08/13 职场文书
优秀共产党员主要事迹材料
2015/11/05 职场文书
Python基础之pandas数据合并
2021/04/27 Python
python和anaconda的区别
2022/05/06 Python