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 相关文章推荐
在Django的session中使用User对象的方法
Jul 23 Python
Python中使用urllib2模块编写爬虫的简单上手示例
Jan 20 Python
对Python 多线程统计所有csv文件的行数方法详解
Feb 12 Python
利用python实现周期财务统计可视化
Aug 25 Python
python字符串格式化方式解析
Oct 19 Python
在Python中等距取出一个数组其中n个数的实现方式
Nov 27 Python
使用pyqt 实现重复打开多个相同界面
Dec 13 Python
matplotlib subplot绘制多个子图的方法示例
Jul 28 Python
Pycharm的Available Packages为空的解决方法
Sep 18 Python
Python获取android设备cpu和内存占用情况
Nov 15 Python
Python基础之进程详解
May 21 Python
对Keras自带Loss Function的深入研究
May 25 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/04/09 国漫
深入解析PHP 5.3.x 的strtotime() 时区设定 警告信息修复
2013/08/05 PHP
PHP 利用Mail_MimeDecode类提取邮件信息示例
2014/01/26 PHP
PHP调用VC编写的COM组件实例
2014/03/29 PHP
ThinkPHP之N方法实例详解
2014/06/20 PHP
PHP中strtr字符串替换用法详解
2014/11/26 PHP
PHP进程同步代码实例
2015/02/12 PHP
TP5框架简单登录功能实现方法示例
2019/10/31 PHP
jquery实现checkbox 全选/全不选的通用写法
2014/02/22 Javascript
JavaScript利用append添加元素报错的解决方法
2014/07/01 Javascript
jquery通过load获取文件的内容并跳到锚点的方法
2015/01/29 Javascript
jQuery 1.9.1源码分析系列(十三)之位置大小操作
2015/12/02 Javascript
form+iframe解决跨域上传文件的方法
2016/11/18 Javascript
Angular弹出模态框的两种方式
2017/10/19 Javascript
基于iview-admin实现动态路由的示例代码
2019/10/02 Javascript
vue+iview框架实现左侧动态菜单功能的示例代码
2020/07/23 Javascript
js实现3D旋转相册
2020/08/02 Javascript
[01:11:21]DOTA2-DPC中国联赛 正赛 VG vs Elephant BO3 第一场 3月6日
2021/03/11 DOTA
python开发之文件操作用法实例
2015/11/13 Python
使用Python简单的实现树莓派的WEB控制
2016/02/18 Python
浅谈Python类的__getitem__和__setitem__特殊方法
2016/12/25 Python
Windows平台Python连接sqlite3数据库的方法分析
2017/07/12 Python
python正则表达式re之compile函数解析
2017/10/25 Python
用python实现刷点击率的示例代码
2019/02/21 Python
python 多线程串行和并行的实例
2019/02/22 Python
Python3和PyCharm安装与环境配置【图文教程】
2020/02/14 Python
python 瀑布线指标编写实例
2020/06/03 Python
Python dict的常用方法示例代码
2020/06/23 Python
python 使用openpyxl读取excel数据
2021/02/18 Python
英国男士时尚网站:Dandy Fellow
2018/02/09 全球购物
英国女性化妆品收纳和家具网站:Beautify
2019/12/07 全球购物
Spartoo美国:欧洲排名第一的在线时装零售商
2019/12/12 全球购物
2014年维稳工作总结
2014/11/18 职场文书
爱晚亭导游词
2015/02/09 职场文书
员工辞退通知书
2015/04/17 职场文书
Python django中如何使用restful框架
2021/06/23 Python