Python打印scrapy蜘蛛抓取树结构的方法
本文实例讲述了Python打印scrapy蜘蛛抓取树结构的方法。分享给大家供大家参考。具体如下:
通过下面这段代码可以一目了然的知道scrapy的抓取页面结构,调用也非常简单
#!/usr/bin/env python
import fileinput, re
from collections import defaultdict
def print_urls(allurls, referer, indent=0):
urls = allurls[referer]
for url in urls:
print ' '*indent + referer
if url in allurls:
print_urls(allurls, url, indent+2)
def main():
log_re = re.compile(r'<GET (.*?)> \(referer: (.*?)\)')
allurls = defaultdict(list)
for l in fileinput.input():
m = log_re.search(l)
if m:
url, ref = m.groups()
allurls[ref] += [url]
print_urls(allurls, 'None')
main()
希望本文所述对大家的Python程序设计有所帮助。
相关推荐
-
Python实现二叉树结构与进行二叉树遍历的方法详解
二叉树的建立 使用类的形式定义二叉树,可读性更好 class BinaryTree: def __init__(self, root): self.key = root self.left_child = None self.right_child = None def insert_left(self, new_node): if self.left_child == None: self.left_child = BinaryTree(new_node) else: t = BinaryTr
-
JavaScript几种形式的树结构菜单
1.悬浮层树(Tree) 这种树结构实现类似面包屑导航功能,监听的是节点鼠标移动的事件,然后在节点下方或右方显示子节点,依此递归显示子节点的子节点. 用户首页博客设置文章相册留言评论系统 这里要注意几个小问题,其一这种树结构是悬浮层绝对定位的,在创建层的时候一定要直接放在body的下面,这样做的是确保在IE里面能遮掩住任何层,因为在IE里面是有stacking context这种东西的潜规则在里面的,另外当然还有一个select你能遮住我吗?老掉牙的问题,这里是采用在每个悬浮层后面加个ifram
-
C++二叉树结构的建立与基本操作
准备数据定义二叉树结构操作中需要用到的变量及数据等. 复制代码 代码如下: #define MAXLEN 20 //最大长度typedef char DATA; //定义元素类型struct CBTType //定义二叉树结点类型 { DATA data; //元素数据 CBTType * left; //左子树结点指针 CBTType * right; //右子树结点指针 }; 定义二叉树结构数据元素的类型DA
-
mybatis实现读取树结构数据实例代码
mybatis实现读取树结构数据详细介绍如下所示: 表结构 CREATE TABLE `lscrm_function_privilege` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '编号', `create_id` varchar(30) NOT NULL DEFAULT 'sys', `update_id` varchar(30) NOT NULL DEFAULT 'sys', `create_time` timestam
-
java根据数据库表内容生产树结构json数据的方法
1.利用场景 组织机构树,通常会有组织机构表,其中有code(代码),pcode(上级代码),name(组织名称)等字段 2.构造数据(以下数据并不是组织机构数据,而纯属本人胡编乱造的数据) List<Tree<Test>> trees = new ArrayList<Tree<Test>>(); tests.add(new Test("0", "", "关于本人")); tests.add(new
-
详解JavaScript树结构
对于数据结构"树",想必大家都熟悉,今儿,我们就再来回顾一下数据结构中的二叉树与树,并用JavaScript实现它们. ps:树结构在前端中,很多地方体现得淋漓尽致,如Vue的虚拟DOM以及冒泡等等. 二叉树 --概念-- 二叉树是一种树形结构,它的特点是每个结点至多只有两棵子树(即二叉树中不存在度大于2的结点),并且,二叉树的子树有左右之分,其次序不能任意颠倒. 如下,就是一棵二叉树(注:下文二叉树相关例子,都以该二叉树为例): 且,遍历二叉树(traversing binary t
-
asp下生成目录树结构的类
关于生成目录树结构的类 本程序有两文件test.asp 和tree.asp 还有一些图标文件 1.test.asp 调用类生成树 代码如下 <%@ Language=VBScript %> <html> <head> <link rel="stylesheet" href="tree.css"> <title>tree</title> </head> <!-- #include
-
一个很简单的jquery+xml+ajax的无刷新树结构(无css,后台是c#)
复制代码 代码如下: using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Data.Linq; using System.Xml; using System.Xml.Linq; namespace WebApplication3 { public
-
JAVA 根据数据库表内容生产树结构JSON数据的实例代码
1.利用场景 组织机构树,通常会有组织机构表,其中有code(代码),pcode(上级代码),name(组织名称)等字段 2.构造数据(以下数据并不是组织机构数据,而纯属本人胡编乱造的数据) List<Tree<Test>> trees = new ArrayList<Tree<Test>>(); tests.add(new Test("0", "", "关于本人")); tests.add(new
-
Java实现简单树结构
简单的实现了一个树的结构,很不完善!后续参考一些其他代码的实现. 试图实现叶子存在可变的节点,能够用来解析xml文件. 叶子的代码: package com.app; import java.util.ArrayList; import java.util.List; public class treeNode<T> { public T t; private treeNode<T> parent; public List<treeNode<T>> node
随机推荐
- 九宫格的含义 横竖斜三个数相加都等于15
- vue实现单选和多选功能
- Git 详细介绍查看、删除、重命名远程分支和tag
- Java多线程实现Callable接口
- 详解iOS多线程之2.NSThread的加锁@synchronized
- php生成毫秒时间戳的实例讲解
- Python中用post、get方式提交数据的方法示例
- 详谈PHP中的密码安全性Password Hashing
- 解析android res 运行错误的问题
- Python中使用ConfigParser解析ini配置文件实例
- 举例讲解Python的Tornado框架实现数据可视化的教程
- Python 文件读写操作实例详解
- mysql获取分组后每组的最大值实例详解
- Bash Shell中的select命令简单使用示例
- 总结在前端排序中遇到的问题
- 详解nodejs微信公众号开发——1.接入微信公众号
- linux下输入长文件名小技巧
- 关于java中Map的九大问题分析
- Ruby实现的最长公共子序列算法
- 我的论坛源代码(二)
