Python小应用1 - 抓取网页中的链接地址
看到一篇博文上讲到用Python写自动访问博客的功能,里面的核心功能就是抓取网页中的链接,类似一个网页爬虫工具。正好我刚学习Python,就决定自己练习一下。写了一下,原本觉得很简单的东西,搞了半天才终于搞定,看来纸上得来终是浅,勤加实践才是王道。虽然花了不少时间,但是感觉自己收获还是蛮大的。
这段代码的知识点包括以下几个:
- 列表的使用;
- 自定义全局函数的写法;
- 自定义类及继承类的写法;
- 标准模块的使用
- 异常处理
下面看代码。
先是导入用到的标准模块:
import html.parser as parser import urllib.request
然后是分析网页中网址的类定义:
1 class MyHtmlParser(parser.HTMLParser): 2 def __init__(self, lst = None): 3 super().__init__() #这里容易漏掉导致出错 4 if not lst: 5 self.urls = [] 6 else: 7 self.urls = lst 8 9 def handle_starttag(self, tag, attrs): 10 for attr, value in attrs: 11 if "http" in value and ".js" not in value \ 12 and value not in self.urls: 13 self.urls.append(value) 14 15 def handle_startendtag(self, tag, attrs): 16 for attr, value in attrs: 17 if "http" in value and ".js" not in value \ 18 and value not in self.urls: 19 self.urls.append(value)
解析网址函数:
1 def ParseUrlsInText(text, lst): 2 pars = MyHtmlParser(lst) 3 try: 4 pars.feed(text) 5 #添加异常处理,可能会遇到各种异常 6 except parser.HTMLParseError as ex: 7 print("parse failed.",ex)
最后是实现整个功能的函数:
1 def VisitUrlsInPage(pageUrl): 2 url_list = [pageUrl] 3 for url in url_list: 4 try: 5 fh = urllib.request.urlopen(url) 6 data = fh.read() 7 ParseUrlsInText(str(data), url_list) 8 #这里是为了快速结束,去掉就变成小爬虫了 9 if len(url_list) >= 200: 10 break 11 except urllib.request.URLError: 12 print("Failed.") 13 continue 14 print("length: ", len(url_list)) 15 for url in url_list: 16 print(url) 17 18 19 if __name__ == '__main__': 20 VisitUrlsInPage("http://www.cnblogs.com/jason-yang/")
里面的异常处理和对地址的剔除还不完善,对不同的网站运行过程中可能还会有些小问题。
转载于:https://www.cnblogs.com/jason-yang/archive/2012/04/14/2447766.html
Python小应用1 - 抓取网页中的链接地址相关推荐
- php 采集邮箱,采集邮箱的php代码(抓取网页中的邮箱地址)
采集邮箱的php代码(抓取网页中的邮箱地址) 复制代码 代码如下: $url='http://www.jb51.net'; //这个网页里绝对含有邮件地址. $content=file_get_con ...
- python获取网页图片_python抓取网页中的图片示例
python抓取网页中的图片示例 代码如下: #coding:utf8 import re import urllib def getHTML(url): page = urllib.urlopen( ...
- Python抓取网页中的动态序列化数据
Python抓取网页中的动态序列化数据 动态序列化数据经常应用于前后端分离的页面.或者通过VUE.JS等HTML页面环境,常规的爬虫抓取方法并不能满足数据采集的要求,因此需要其他的方式进行数据的采集. ...
- php正则获取li,用正则表达式抓取网页中的ul 和 li标签中最终的值!
获取你要抓取的页面 const string URL = "http://www.hn3ddf.gov.cn/price/GetList.html?pageno=1"; ...
- php抓取标签内的内容,php抓取网页中的内容
以下就是几种常用的用php抓取网页中的内容的方法. 1.file_get_contents PHP代码 代码如下:>>>>>>>>>>> ...
- Python利用bs4批量抓取网页图片并下载保存至本地
Python利用bs4批量抓取网页图片并下载保存至本地 使用bs4抓取网页图片,bs4解析比较简单,需要预先了解一些html知识,bs4的逻辑简单,编写难度较低.本例以抓取某壁纸网站中的壁纸为例.(b ...
- 利用pandas库中的read_html方法快速抓取网页中常见的表格型数据
利用pandas库中的read_html方法快速抓取网页中常见的表格型数据 本文转载自:https://www.makcyun.top/web_scraping_withpython2.html 需要 ...
- 一个用php抓取网页中电子邮箱的实例
原文出自: http://outofmemory.cn/code-snippet/36020/php-how-zhuaqu-wangye-youxiangdizhi-code php如何抓取网页中邮箱 ...
- java抓取页面表格_用java实现爬虫抓取网页中的表格数据功能源码
[实例简介] 使用java代码基于MyEclipse开发环境实现爬虫抓取网页中的表格数据,将抓取到的数据在控制台打印出来,需要后续处理的话可以在打印的地方对数据进行操作.包解压后导入MyEclipse ...
最新文章
- nginx、uwsgi部署django项目理论+实战
- 【.NET架构】BIM软件架构02:Web管控平台后台架构
- Xftp远程连接出现“无法显示文件夹”的问题补充
- 【2016年第4期】研究(国家自然科学基金项目成果集萃)导读
- java 优酷视频缩略图_优酷视频缩略图
- pydev中使用wxpython找不到路径的问题
- 最课程学员启示录:一份有诚意的检讨书
- struts2请求过程源代码分析
- java visualvm 内存泄露_如何使用VisualVM检测Java内存泄漏
- 从目标文件结构,加载、执行阶段,汇编角度来理解C程序内存分区
- 阿里云短信验证第三方接口(快速使用)
- 苹果13可以用无线充电宝吗?苹果专用无线充电宝推荐
- 还记得2048怎么玩吗?快来玩会儿(摸鱼)吧
- JAVA 9中module初探
- 【清华大学】深入理解操作系统(陈渝) 第四章
- 用canvas画一个太极八卦图
- 未来电信业的发展方向 VOIP的中国之路
- 物体跟随鼠标移动——图片为gif格式
- 李政軒Cheng-Hsuan Li的关于机器学习一些算法的中文视频教程
- adb命令行打开Android settings
热门文章
- SecureCRT 连接Win10内置ubuntu问题层层突围
- kkFileView ---- 文件预览开源项目
- android 回退函数,android浏览器研究-回退和前进
- android实现字体滚动,Android实现字幕滚动的方法
- rabbitMQ碰到了对象跨项目的时候,反序列化出了问题
- SpringBoot - 使用ExecutorService线程池执行异步任务教程(以Runnable任务为例)
- matlab练习程序(径向模糊1)
- demo10 关于JS Tree Shaking
- 50.本地VMware环境虚拟机的异地(Azure)容灾(上)
- [CTO札记]第1天:认识人、熟悉环境