spider autohome (1)
Code:
- #!/usr/bin/python
- # -*- coding: UTF-8 -*-
- import re
- import urllib
- import time
- def getHtml(url):
- """ This function just simply get all the data
- by the url you get.and then decode and code
- to utf-8 which you need.
- """
- page = urllib.urlopen(url)
- html=page.read()
- uni_str = html.decode('gb2312')
- utf_str = uni_str.encode('utf-8')
- return utf_str
- def getInfo(html):
- """
- This function just simply get the data from the html
- and filter some data which we are interest,and then
- return a list.
- """
- reg = r'config = {(.+?)};'
- config_re = re.compile(reg)
- config_list = re.findall(config_re,html)
- return config_list
- def getEachCar(config_lists):
- """ This function will parse the data,and
- then return a list include the all
- information of each car,the each item
- of the car's information split by '|'.
- """
- each_car={}
- for sp in config_lists:
- config_str='{'+sp+'}'
- config_str=config_str.replace("null","None")
- regx=r'{"specid":\d{5},"value":.+?}'
- cc=re.compile(regx)
- xx=re.findall(regx,config_str)
- for x in xx:
- x=eval(x)
- akey=repr(x['specid'])
- if each_car.has_key(akey):
- each_car[akey]=each_car[akey]+x["value"]+"|"
- else:
- each_car[akey]=x['value']
- jobs=[]
- for each in each_car:
- ter_data="|"+each_car[each]
- jobs.append(ter_data)
- return jobs
- if __name__ == '__main__':
- # html = getHtml("http://car.autohome.com.cn/config/spec/21308.html#pvareaid=100679")
- html = getHtml("http://car.autohome.com.cn/config/spec/18239.html")
- config_lists=getInfo(html)
- each_car=getEachCar(config_lists)
- for acar in each_car:
- print acar
Result:
spider autohome (1)的更多相关文章
- spider RPC入门指南
本部分将介绍使用spider RPC开发分布式应用的客户端和服务端. spider RPC中间件基于J2SE 8开发,因此需要确保服务器上安装了JDK 8及以上版本,不依赖于任何额外需要独立安装和配置 ...
- Scrapy:为spider指定pipeline
当一个Scrapy项目中有多个spider去爬取多个网站时,往往需要多个pipeline,这时就需要为每个spider指定其对应的pipeline. [通过程序来运行spider],可以通过修改配置s ...
- spider RPC过滤器
spider支持在请求执行前或完成后进行特殊处理,比如安全性检查.敏感字段混淆等等.为此,spider提供了BeforeFilter和AfterFilter.其执行位置如下图所示: 流水线插件配置在s ...
- spider RPC插件化体系
为了满足灵活扩展的需要,spider支持灵活的自定义插件扩展,从功能上来说,插件和过滤器的差别在于过滤器不会阻止请求的执行同时对于主程序不会有API上的影响(比如servlet 过滤器和监听器)(最多 ...
- spider RPC管理接口
为了在独立管理模式下尽可能的容易运行时排查问题,spider中间件提供了一系列restful api用于动态管理当前节点的路由,下游节点等.目前支持的RESTFUL API如下所示: 功能 服务号 R ...
- spider RPC高级特性
多租户 spider原生支持多租户部署,spider报文头对外开放了机构号.系统号两个属性用于支持多租户场景下的路由. 多租户场景下的路由可以支持下述几种模式: n 系统号: n 系统号+服务号( ...
- spider RPC安全性
spider提供了多重安全保障机制,目前主要支持接入握手校验,报文完整性校验,报文加密,报文长度检查四种机制. 接入认证 spider使用两次握手校验,其握手流程如下: 签名AES加密的方式实现. l ...
- spider RPC开发指南
协议与兼容性 spider使用java语言开发,使用Spring作为IoC容器,采用TCP/IP协议,在此基础上,结合SaaS系统模式的特性进行针对性和重点设计,以更加灵活和高效的满足多租户系统.高可 ...
- spider 配置文件参考
spider有一个配置文件spider.xml,为xml格式,spider.xml采用DTD进行管理,用于管理spider的所有特性.路由.高可用等. 配置文件支持三种不同的方式进行指定: 1. 通过 ...
随机推荐
- Linux编程获取本地IP
#include <stdio.h> #include <sys/types.h> #include <ifaddrs.h> #include <netine ...
- solr入门命令
#####################shell命令############################# 导入文档: sh bin/post -c gettingstarted docs/i ...
- Xml文件操作的其中一个使用方法:
XmlNodeList students = doc.DocumentElement.ChildNodes;//Student节点集合 foreach (XmlNode stu in students ...
- C#将Enum枚举映射到文本字符串
介绍 当将以前的C代码移植到C#中时,我快发疯了,因为有很多的数组需要将常量映射到字符串.当我在寻找一个C#的方法来完成的时候,我发现了一个自定义属性和映射的方法. 如何使用代码? 对每一个enum枚 ...
- Python全栈之路4--内置函数--文件操作
上节重点回顾: 判断对象是否属于某个类,例如: 列表中有个数字,但是循环列表判断长度,用len会报错;因为int不支持len,所以要先判断属于某个类,然后再进行if判断. # isinstance(对 ...
- Linux ps命令详解与示例说明
ps:要对进程进行监测和控制,首先必须要了解当前进程的情况,也就是需要查看当前进程,而ps命令就是最基本同时也是非常强大的进程查看命令.使用该命令可以确定有哪些进程正在运行和运行的状态.进程是否结 ...
- 『BASH』——文件权限批量恢复脚本——「Permission Revovery」
一.恢复指定程序包所有文件的权限: #!/bin/bash #Assume that you have mounted a correct orignal-system on /mnt read -p ...
- windows server 2008 - 创建域和本机用户
/* * ===================================================================================== * Filenam ...
- 1606: [Usaco2008 Dec]Hay For Sale 购买干草
Description 约翰遭受了重大的损失:蟑螂吃掉了他所有的干草,留下一群饥饿的牛.他乘着容量为C(1≤C≤50000)个单位的马车,去顿因家买一些干草. 顿因有H(1≤H≤5000)包 ...
- 一些CSS常见的小问题小笔记
父元素与子元素之间的margin-top问题: 给子元素盒子一个垂直外边距margin-top,父元素盒子也会往下走margin-top的值 解决方法: 1.修改父元素的高度,增加padding-to ...