import urllib, urllib2, cookielib
from HTMLParser import HTMLParser
import sys reload(sys)
sys.setdefaultencoding('utf8') class WebParser(HTMLParser):
def __init__(self, links, path):
HTMLParser.__init__(self)
self.links = links
self.path = path def handle_starttag(self, tag, attrs):
if tag == 'a':
if len(attrs) == 0:
pass
else:
for (key, val) in attrs:
if key == 'href':
if val.startswith('http'):
self.links.add(val)
elif val.startswith('/'):
self.links.add(self.path + val) class Crawl:
def __init__(self):
self.path = 'http://www.baidu.com'
self.cookie = cookielib.CookieJar()
handler = urllib2.HTTPCookieProcessor(self.cookie)
self.opener = urllib2.build_opener(handler) def open(self, path):
self.response = self.opener.open(path) def showCookie(self):
for item in self.cookie:
print 'Name = ' + item.name
print 'value = ' + item.value def showResponse(self):
print self.response.read() def getAllUrl(self, links, path):
try:
self.open(path)
res = self.response.read()
parser = WebParser(links, path)
parser.feed(res)
parser.close()
except Exception, e:
print e def crawl(self):
src_links = set()
result_links = set()
self.getAllUrl(src_links, self.path)
n = 200
while len(src_links) != 0 and n > 0:
link = src_links.pop()
if link in result_links:
pass
result_links.add(link)
self.getAllUrl(src_links, link)
n -= 1
print n return result_links | src_links c = Crawl()
rlt = c.crawl()
for link in rlt:
print link

提取网址的python练习的更多相关文章

  1. (学习网址)Python 自动化测试

    1.Python自动化测试地址 http://www.wtoutiao.com/author/python-selenium.html 2.unittest参考网址: 1)python自动化测试报告H ...

  2. 正则提取关键字符-python代码实现

    原文地址:http://www.bugingcode.com/blog/python_re_extraction_key.html 关于python的正则使用在以前的文章中 http://www.bu ...

  3. 基于 RTF specification v1.7 的 RTF 文件解析及 OLE 对象提取(使用 Python 开发)

    0x01 Office RTF 文件介绍 RTF 文件也称富文本格式(Rich Text Format, 一般简称为 RTF),意为多文本格式是由微软公司开发的跨平台文档格式.大多数的文字处理软件都能 ...

  4. [Python]爬取首都之窗百姓信件网址id python 2020.2.13

    经人提醒忘记发网址id的爬取过程了, http://www.beijing.gov.cn/hudong/hdjl/com.web.consult.consultDetail.flow?original ...

  5. javascript在字符串中提取网址并替换成超链接

    var str = " http://wasmip.baidu.com.cn/mip/km/archives/km_archives_main/kmArchivesMain.do?metho ...

  6. Python使用xslt提取网页数据

    1,引言 在Python网络爬虫内容提取器一文我们详细讲解了核心部件:可插拔的内容提取器类gsExtractor.本文记录了确定gsExtractor的技术路线过程中所做的编程实验.这是第一部分,实验 ...

  7. asp.net正则表达式提取网页网址、标题、图片实例以及过滤所有HTML标签实例

    无论你用什么语言,正则表达式的处理方法都是非常灵活.高效的,尤其是对某些字符串的抓取.过滤方面,更显其优势. 正则表达式的写法通常比较简单,几行短代码便能轻松完成看似很复杂的事情,更值得称赞的是,它的 ...

  8. Python基于共现提取《釜山行》人物关系

    Python基于共现提取<釜山行>人物关系 一.课程介绍 1. 内容简介 <釜山行>是一部丧尸灾难片,其人物少.关系简单,非常适合我们学习文本处理.这个项目将介绍共现在关系中的 ...

  9. 【Python】批量查询-提取站长之家IP批量查询的结果v1.0

    0 前言 写报告的时候为了细致性,要把IP地址对应的地区给整理出来.500多条IP地址找出对应地区复制粘贴到报告里整了一个上午. 为了下次更好的完成这项重复性很高的工作,所以写了这个小的脚本. 1 使 ...

随机推荐

  1. 事务一致性理解 事务ACID特性的完全解答

    A  原子性 事务管理者多个小操作,他们同时完成或者同时不完成就是原子性 C 一致性 一致性,是一个很相对的,很主观的概念, 一致性 描述的是 事务 从一个一致的状态变成 另一个一致的状态. 一致性需 ...

  2. dom4j和document

    DOM的优点和缺点: 优点:DOM操作思维清晰,简单 缺点:在操作大量数据的时候性能,不能保证 DOM(Document Object Model) // 表示出需要被操作的XML文件的路径,注意是文 ...

  3. redis学习笔记05-发布订阅模式

    由于redis消息队列并不支持多播机制,即生产者产出一次,由中间件复制发送给多个消费者的机制,为了弥补这个不足,单独引入了发布订阅模式的模块.使用方式如下: #生产者 import redis cli ...

  4. jqGrid列的统计

    $("#List").jqGrid({ url: "${pageContext.request.contextPath}/cbfx/getCbhzList.do" ...

  5. uva11401:Triangle Counting 递推 数学

    uva11401:Triangle Counting 题目读不清楚的下场就是多做两个小时...从1-n中任选3个不重复数字(不重复啊!!坑爹啊!)问能组成三角形的有多少个, 显然1~n能组成的三角形集 ...

  6. 更好用的集群限流功能,Sentinel 发布 v1.4.2

    摘要: 感谢 Sentinel 社区的贡献者们 ️ Sentinel 发布 v1.4.2 正式发布,该版本主要变更如下: 特性/功能改进 新增 Zuul 1.x 适配模块(sentinel-zuul- ...

  7. [Array]167. Two Sum II - Input array is sorted

    Given an array of integers that is already sorted in ascending order, find two numbers such that the ...

  8. NPOI 1.1

    1 .NPOI 版本2.1 2. NPOI 读取execl 3.导入数据(SqlBulkCopy) 示例代码: public class ImportServerData { DataTable dt ...

  9. Django项目:CRM(客户关系管理系统)--40--32PerfectCRM实现King_admin添加不进行限制

    # forms.py # ————————19PerfectCRM实现King_admin数据修改———————— from django import forms from crm import m ...

  10. vue多页面项目配置

    全局配置 打开 ~\build\webpack.base.conf.js ,找到entry,添加多入口 entry: { main: './src/main.js', main2: './src/ma ...