python爬虫简单实例

介绍

主要是用来抓取全国主要省份的邮政编码,官方网址为:http://www.ip138.com/post/

这里写图片描述

通过在网页上右键来查看审查元素,然后在html内可以发现以下内容,而爬虫也正是要爬取这些内容。

这里写图片描述

源代码

import requests
import xml.etree.ElementTree as ET
from xml.parsers.expat import ParserCreate

class DefaultSaxHandler(object):
    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):
    # 获取文本,并用gb2312解码
    content = requests.get(url).content.decode('gb2312')#编码方式
   # print(content)
    # 确定要查找字符串的开始结束位置,并用切片获取内容。
    #开始和结束标志
    start = content.find('<map name=\"map_86\" id=\"map_86\">')
    end = content.find('</map>')
   # print(start,end)
    content = content[start:end + len('</map>')].strip()
    #print(content)
    provinces = []
    # 生成Sax处理器
    handler = DefaultSaxHandler(provinces)
    # 初始化分析器
    parser = ParserCreate()
    parser.StartElementHandler = handler.start_element
    parser.EndElementHandler = handler.end_element
    parser.CharacterDataHandler = handler.char_data
    # 解析数据
    parser.Parse(content)
    # 结果字典为每一页的入口代码
    return provinces

#从哪个页面进入
provinces = get_province_entry('http://www.ip138.com/post')
print(provinces)

爬取结果

可以看到已经成功地从网页上爬取到各省份的邮政编码。

这里写图片描述

猜你喜欢

转载自blog.csdn.net/qq_29462849/article/details/81163893