四、简单小爬虫

import requests
import xml.etree.cElementTree as EF
from xml.parsers.expat import ParserCreate

class DefaultsaxHandler(object):
    "sax处理器"
    def __init__(self,provinces):
        self.provinces=provinces
    #开始处理标签
    def start_element(self,name,attrs):
        if name!=‘map‘:
            name=attrs[‘title‘]
            number=attrs[‘href‘]
            self.provinces.append((name,number))
    #结束标签
    def end_element(self,name):
        pass
    #文本处理
    def char_data(self,text):
        pass

def get_province_entry(url):
    content=requests.get(url).content.decode("gbk")
    #查找开始结束位置,切片处理
    start=content.find(‘<map name="map_86" id="map_86"‘)
    end=content.find(‘</map>‘)
    content=content[start:end+len(‘</map>‘)].strip()
    provinces=[]
    handler=DefaultsaxHandler(provinces)

    parse=ParserCreate()  #这是钩子函数
    #初始化分析器  (self.a=a)
    parse.StartElementHandler=handler.start_element
    parse.EndElementHandler=handler.end_element
    parse.CharacterDataHandler=handler.char_data
    #解析数据
    parse.Parse(content)
    #字典每一页的入口
    return provinces
provinces=get_province_entry("http://www.ip138.com/post")
print(provinces)

结果:

[(‘新疆‘, ‘/83/‘), (‘西藏‘, ‘/85/‘), (‘青海‘, ‘/81/‘), (‘甘肃‘, ‘/73/‘), (‘四川‘, ‘/61/‘), (‘云南‘, ‘/65/‘), (‘宁夏‘, ‘/75/‘), (‘内蒙古‘, ‘/01/‘), (‘黑龙江‘, ‘/15/‘), (‘吉林‘, ‘/13/‘), (‘辽宁‘, ‘/11/‘), (‘河北‘, ‘/50/‘), (‘北京‘, ‘/10/‘), (‘天津‘, ‘/30/‘), (‘陕西‘, ‘/71/‘), (‘山西‘, ‘/03/‘), (‘山东‘, ‘/25/‘), (‘河南‘, ‘/45/‘), (‘重庆‘, ‘/40/‘), (‘湖北‘, ‘/43/‘), (‘安徽‘, ‘/23/‘), (‘江苏‘, ‘/21/‘), (‘上海‘, ‘/20/‘), (‘贵州‘, ‘/55/‘), (‘广西‘, ‘/53/‘), (‘湖南‘, ‘/41/‘), (‘江西‘, ‘/33/‘), (‘浙江‘, ‘/31/‘), (‘福建‘, ‘/35/‘), (‘广东‘, ‘/51/‘), (‘海南‘, ‘/57/‘), (‘台湾‘, ‘/taiwang/‘), (‘澳门‘, ‘/aomen/‘), (‘香港‘, ‘/xianggang/‘)]

xml知识:http://www.runoob.com/python/python-xml.html

时间: 2024-08-05 08:11:18

四、简单小爬虫的相关文章

亲身试用python简单小爬虫

前几天基友分享了一个贴吧网页,有很多漂亮的图片,想到前段时间学习的python简单爬虫,刚好可以实践一下. 以下是网上很容易搜到的一种方法: 1 #coding=utf-8 2 import urllib 3 import re 4 5 def getHtml(url): 6 page = urllib.urlopen(url) 7 html = page.read() 8 return html 9 10 def getImg(html): 11 reg = r'src="(.+?\.jpg)

用Python写了个简单小爬虫

1 #coding: utf-8 2 3 import requests,urllib2,urlparse,time,sys 4 from bs4 import BeautifulSoup 5 6 #获取百度url wd查询关键子 pn第几页 rn 每页多少条 最大50条 7 #getbaidu.py 关键字 爬取页数 每页数量 8 #getbaidu.py example 10 50 9 #百度特性 每页显示条数为10 20 30类型的整数 10 11 12 type = sys.getfil

Node.js(四)【HTTP小爬虫】

HTTP源码解读 HTTP性能测试 1 var http = require('http'); 2 3 http 4 .createServer(function (request, response) { 5 response.writeHead(200, {'Content-type': 'text/plain'}); 6 response.write('Hello Nodejs'); 7 response.end(); 8 }) 9 .listen(2016); 10 11 console

python速成第二篇(小爬虫+文件操作+socket网络通信小例子+oop编程)

大家好,由于前天熬夜写完第一篇博客,然后昨天又是没休息好,昨天也就不想更新博客,就只是看了会资料就早点休息了,今天补上我这两天的所学,先记录一笔.我发现有时候我看的话会比较敷衍,而如果我写出来(无论写到笔记本中还是博客中,我都有不同的感觉)就会有不同的想法,我看书或者看资料有时候感觉就是有一种惰性,得过且过的感觉,有时候一个知识想不通道不明,想了一会儿,就会找借口给自己说这个知识不重要,不需要太纠结了,还是去看下一个吧,然后就如此往复下去,学习就会有漏洞,所以这更加坚定了我写博客来记录的想法.

Python---BeautifulSoup 简单的爬虫实例

对python自动化比较熟的同学,很多都懂一些爬虫方法,有些还研究的很深,下面呢我介 绍一个简单的爬虫实例,供大家参考.当然里面有很多需求是可以再学习的,下载进度的显 示.下载完成的提示等等. 一.首先我们要研究爬虫网站的架构,我这里已ring.itools.cn为例,我需要爬的是铃声. 大家可以自己去分析,这个网站的架构比较简单就不讲了. 我们最终要获取的是下面两个信息: 二.我们写下面的脚本来获取 上面的脚本呢,获取到songname和playaddr都是一组数据,即都是列表,我们需要把 他

用python3.x与mysql数据库构建简单的爬虫系统(转)

这是在博客园的第一篇文章,由于本人还是一个编程菜鸟,也写不出那些高大上的牛逼文章,这篇文章就是对自己这段时间学习python的一个总结吧. 众所周知python是一门对初学编程的人相当友好的编程语言,就像本屌丝一样,一学就对它产生好感了!当然,想要精通它还有很多东西需要学习.那废话不多说了,下面我就来说一下如何用python3.x与mysql数据库构建一个简单的爬虫系统(其实就是把从网页上爬下来的内容存储到mysql数据库中). 首先就是搭建环境了,这里就简介绍一下我的环境吧.本机的操作系统是w

Python网页小爬虫

最近右胳膊受伤,打了石膏在家休息.为了实现之前的想法,就用左手打字.写代码,查资料完成了这个资源小爬虫.网页爬虫, 最主要的是协议分析(必须要弄清楚自己的目的),另外就是要考虑对爬取的数据归类,存储.这是一个在线歌曲网站的爬虫,网站名 字就不说了,此贴目的是技术交流,请不用做其他用途! 相关技术点:http协议.js.AES.文件.文件夹操作.正则表达式.数据库技术.SQL -------------------------------------------分割线 以下 为设计思路------

爬虫入门实战,知乎小爬虫

相比于爬虫框架,知乎小爬虫,更加适合初学者,尤其是想要了解爬虫技术细节.实现自己编写爬虫需求的初学者. 1. 谈爬虫工程师的价值 大数据时代已到,数据越来越具有价值了,没有数据寸步难行,有了数据好好利用,可以在诸多领域干很多事,比如很火的互联网金融.从互联网上爬来自己想要的数据,是数据的一个重要来源,而且往往是必不可少的来源.所有,目前,爬虫工程师是一个非常吃香的职位,工资往往都不低,就是要耐得住寂寞了.那爬虫工程师的价值也就是能稳定的.高效的和实时的带来数据.这里推荐看两篇文章: http:/

nodejs实现简单的爬虫

闲着无聊就想鼓捣点东西玩玩,所以决定用node做个爬虫来爬点数据.查了些资料鼓捣了一段时间也算是弄出了个简单的爬虫. 目前这只小爬虫还是有不少缺陷,不过爬点简单的静态页面上的内容已经足够了. 详细的使用说明我就不介绍了,在github中有.地址:https://github.com/XLandMine/node-crawler 相关代码的说明我也都有注释,需要注意的是我对于爬取深度的理解是url的path有几个‘/’即为几层深度,默认为5. 主要的实现步奏就是利用http或者https模块发送r