博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
利用python对58同城西安本地服务分类提取
阅读量:6880 次
发布时间:2019-06-26

本文共 2266 字,大约阅读时间需要 7 分钟。

hot3.png

58同城其分类信息的信息有几大类,然后大类下面有一些小类信息,其中的html代码如下:

        
          
家政服务                
          ...                        

则可以使用以下的正则表达式进行信息的提取,并将一类的名称和下面的小类进行分组获取:

[\S|\s]*?([\s|\S]*?
(.*))[\S|\s]*?
([\S|\s]*?)[\S|\s]*?

接着对下面的小类进行正则表达式提取,得到的是一系列的<a ..>..</a>:

([\S|\s]*?)

接着对<a ...>..</a>里面的小类的名称进行提取:

([\s|\S]*?)

最后输出就得到所有的分类信息,运行结果如下:

家政服务 {[搬家居民搬家小型搬家空调移机长途搬家搬运],[保姆/月嫂钟点工保姆陪护月嫂育婴师/育儿嫂养老院],...}

详细的代码如下:

# -*- coding: utf-8 -*-  import urllib.requestimport redef  output(file,content):        with open(file,'a') as output_:               output_.write(content)               output_.close()def parse(text,pattern):    p=re.compile(pattern,re.IGNORECASE)    return p.finditer(text)def segment_parse(segment):    m=parse(segment,'
([\S|\s]*?)')    for i in m:            print('[')            output('C:\\Users\\Andy\\Desktop\\classification.txt','[')            m1=parse(i.group(1),'
([\s|\S]*?)')            for i1 in m1:                        print(i1.group(1))                        output('C:\\Users\\Andy\\Desktop\\classification.txt',i1.group(1)+',')            print('],')            output('C:\\Users\\Andy\\Desktop\\classification.txt','],')def parse_doc(html):    m=parse(html,'
[\S|\s]*?([\s|\S]*?
(.*))[\S|\s]*?
([\S|\s]*?)[\S|\s]*?')    for i in m:        print(i.group(2),'{')        output('C:\\Users\Andy\\Desktop\\classification.txt',i.group(2)+'{')        #print(i.group(3))        subclassification=i.group(3)        segment_parse(subclassification)        print('},')        output('C:\\Users\\Andy\\Desktop\\classification.txt','}')def main():    response=urllib.request.urlopen("http://xa.58.com/huangye/?    from=58_shouye_huangye&utm_source=market&    spm=b-31580022738699-me-f-824.bdpz_biaoti&    PGTID=0d100000-001e-3e90-625c-90387953a654&ClickID=2")    codec =response.info().get_param('charset','utf8');    html=response.read()    html=html.decode(codec)    parse_doc(html)if __name__ == '__main__':    main()

PS:日常记录,自己写的正则表达式实在是太烂,仅仅是实现了功能。

转载于:https://my.oschina.net/zhangwenwen/blog/540325

你可能感兴趣的文章
POJ 3494 Largest Submatrix of All 1’s
查看>>
Ubuntu系统分配存储空间的建议以及给Ubuntu系统根目录扩容方法(从20GB追加100GB)...
查看>>
centos 查询mysql配置文件位置
查看>>
Eclipse IDE 使用技巧(一)
查看>>
day14 内置函数二
查看>>
Sequelize-nodejs-2-basic usage
查看>>
XVI Open Cup named after E.V. Pankratiev. GP of Ekaterinburg.
查看>>
iOS-中app启动闪退的原因
查看>>
iOS--高级技术
查看>>
struct内存对齐
查看>>
Ubuntu系统利用docker容器发布简单的应用
查看>>
学习网站
查看>>
HTML 5 <input> placeholder 属性
查看>>
应用场景是什么?怎样判断、描述一个产品的应用场景?
查看>>
Winform基础知识
查看>>
【ClickOnce】自定义前提条件 Creating Bootstrapper Packages
查看>>
css格式与布局
查看>>
但那不是爱
查看>>
Codeforces 935 C Fifa and Fafa
查看>>
浏览器根对象document之方法概述
查看>>