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 pandas.DataFrame 的多重index实例
Jun 08 Python
Python线程下使用锁的技巧分享
Sep 13 Python
python的concat等多种用法详解
Nov 28 Python
PyCharm 设置SciView工具窗口的方法
Jan 15 Python
用Python解决x的n次方问题
Feb 08 Python
Python实现图片转字符画的代码实例
Feb 22 Python
在flask中使用python-dotenv+flask-cli自定义命令(推荐)
Jan 05 Python
Windows下python3安装tkinter的问题及解决方法
Jan 06 Python
Django用户登录与注册系统的实现示例
Jun 03 Python
Python读写csv文件流程及异常解决
Oct 20 Python
Python+OpenCV实现在图像上绘制矩形
Mar 21 Python
Pyhton爬虫知识之正则表达式详解
Apr 01 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
PHP4实际应用经验篇(2)
2006/10/09 PHP
mysql 性能的检查和优化方法
2009/06/21 PHP
php输出xml格式字符串(用的这个)
2012/07/12 PHP
PHP面向对象程序设计之接口用法
2014/08/20 PHP
PHP通过CURL实现定时任务的图片抓取功能示例
2016/10/03 PHP
php的4种常用运行方式详解
2016/12/22 PHP
php curl批处理实现可控并发异步操作示例
2018/05/09 PHP
PHP中ltrim()函数的用法与实例讲解
2019/03/28 PHP
JavaScript使用cookie
2007/02/02 Javascript
TextArea 控件的最大长度问题(js json)
2009/12/16 Javascript
JavaScript用JQuery呼叫Server端方法示例代码
2014/09/03 Javascript
JScript中的条件注释详解
2015/04/24 Javascript
浅谈JavaScript的Polymer框架中的behaviors对象
2015/07/29 Javascript
两种JS实现屏蔽鼠标右键的方法
2020/08/20 Javascript
利用CSS3在Angular中实现动画
2016/01/15 Javascript
浅析vue数据绑定
2017/01/17 Javascript
js 将canvas生成图片保存,或直接保存一张图片的实现方法
2018/01/02 Javascript
Vue中props的详解
2019/05/16 Javascript
jquery图片预览插件实现方法详解
2019/07/18 jQuery
axios 实现post请求时把对象obj数据转为formdata
2019/10/31 Javascript
解决vue更新路由router-view复用组件内容不刷新的问题
2019/11/04 Javascript
JavaScript面试中常考的字符串操作方法大全(包含ES6)
2020/05/10 Javascript
解决antd的Form组件setFieldsValue的警告问题
2020/10/29 Javascript
JS如何监听div的resize事件详解
2020/12/03 Javascript
python BeautifulSoup使用方法详解
2013/11/21 Python
python常用web框架简单性能测试结果分享(包含django、flask、bottle、tornado)
2014/08/25 Python
Python获取当前公网ip并自动断开宽带连接实例代码
2018/01/12 Python
python使用opencv驱动摄像头的方法
2018/08/03 Python
python利用thrift服务读取hbase数据的方法
2018/12/27 Python
py-charm延长试用期限实例
2019/12/22 Python
Python爬取梨视频的示例
2021/01/29 Python
中专生学习生活的自我评价分享
2013/10/27 职场文书
安全大检查反思材料
2014/01/31 职场文书
危货运输企业安全生产责任书
2014/07/28 职场文书
【DOTA2】高能暴走TK秀!PSG LGD vs ASTER - DPC 2022 WINTER TOUR CN
2022/04/02 DOTA
漫画《催眠麦克风-Dawn Of Divisions》第二卷PV公开
2022/04/05 日漫