免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 6666 | 回复: 10
打印 上一主题 下一主题

python成对匹配的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-04-25 15:03 |只看该作者 |倒序浏览
本帖最后由 howema 于 2014-04-25 15:04 编辑

要从以下文本中匹配到公司名称和对应的地址等联系方式,
单独匹配联系方式已经实现了,但是怎么样将公司名称也对应的匹配出来?
输出为
广州南沙南航印刷厂 地址:广州南沙区
广州市高捷印刷纸业有限公司 地址:中国广东广州市花都区广塘工业开发区
即可

求教

<TABLE   border=0 cellPadding=0 cellSpacing=0 width=776 height=30 align=center  bgColor=#ffeb99><TR><td >&nbsp;<font  color=#009900 >1</font><a href='http://www.gze.cn/hmpg_JMMQGMOOCRFMF8.html'   onmousedown='return clk(1026'  target=_blank  rel='nofollow'><FONT color=#ff6600 style='FONT-FAMILY: 华文新魏; FONT-SIZE: 17pt; FONT-STYLE: normal; FONT-WEIGHT: bold'>广州南沙南航印刷厂</FONT></td><td align=right>&nbsp;&nbsp;</td></tr></table><TABLE cellPadding=3 cellSpacing=3 bgColor=#6600ff width=776 align=center><TR> <td><p class=f310>&nbsp&nbsp&nbsp&nbsp公司简介:我公司成立于1988年,经十几年的刻苦经营,巳成为一家集设计和印刷于一体的公司,公司拥有先进的德国,日本印刷设备多台,并培养出一批具有专业水平的技术人才,可以根据您的需求打造满意的印刷品,针对小批量,个性化,快速取货的产品需求,公司引进一套数码快印设备,实现了真正意义按需印刷,即时生产,解决了传统胶印小批量产品印刷成本高,货期长的问题.在未来的发展中,我们一实心
周到的一贯作风,不断创新发展,力求为您提供更好的产品和服务.</p><p><FONT color=#ffcccc>&nbsp&nbsp&nbsp&nbsp网址:<a href='http://www.gze.cn/hmpg_JMMQGMOOCRFMF8.html'    target=_blank onmousedown='return clk(1026'  rel='nofollow'><font color=#FF3333>www.gze.cn/hmpg_JMMQGMOOCRFMF8.html</font></a>&nbsp 地址:广州南沙区</FONT></td></TR></table>

                <TABLE   border=0 cellPadding=0 cellSpacing=0 width=776 height=30 align=center  bgColor=#ffeb99><TR><td >&nbsp;<font  color=#009900 >2</font><a href=http://market.page.net.cn/qy3_js.php?hy=5957 target=_blank  onmousedown='return clk(5957)' ><FONT color=#ff6600 style='FONT-FAMILY: 华文新魏; FONT-SIZE: 17pt; FONT-STYLE: normal; FONT-WEIGHT: bold'>广州市高捷印刷纸业有限公司</FONT></td><td align=right>&nbsp;&nbsp;</td></tr></table><TABLE cellPadding=3 cellSpacing=3 bgColor=#6600ff width=776 align=center><TR> <td><p class=f310>&nbsp&nbsp&nbsp&nbsp本公司是一家专业电脑纸表格印刷、标签打印纸、各行业多联式印刷表格电脑打印纸、电脑打印不干胶标签、电脑商业票据、染整纺织制衣工序单、信息记录纸品、保密信函、保险单证、保险单、广告单页,尤其善于生产有特殊要求的防伪、烫金、条形码、开天窗等电脑表格生产企业。
   我公司拥有完善的组织,先进的生产设备,实施科学的管理。在竞争激烈的今天,为适应市场和满足企业的需求,公司不断发展和激励自己。
   公司本着“立足品质、服务更好”的经营宗旨,坚持以诚信,优质的服务满足市场的要求,竭诚为广大客户服务!</p><p><FONT color=#ffcccc>&nbsp&nbsp&nbsp&nbsp&nbsp 地址:中国广东广州市花都区广塘工业开发区</FONT></td></TR></table>

论坛徽章:
4
白羊座
日期:2013-11-05 10:26:09冥斗士
日期:2015-11-17 14:19:55白银圣斗士
日期:2015-11-17 15:13:0815-16赛季CBA联赛之新疆
日期:2016-04-01 09:10:58
2 [报告]
发表于 2014-04-25 17:24 |只看该作者
厂名和地址都是被特殊的Font tag包围的,你可以看下。
另外,厂名和地址的Font的颜色也是特定的,你可以考虑使用这些做匹配的基点。

论坛徽章:
0
3 [报告]
发表于 2014-04-25 17:27 |只看该作者
回复 2# icymirror
单独都可以匹配到,就是不知道怎么对应起来匹配


   

论坛徽章:
4
白羊座
日期:2013-11-05 10:26:09冥斗士
日期:2015-11-17 14:19:55白银圣斗士
日期:2015-11-17 15:13:0815-16赛季CBA联赛之新疆
日期:2016-04-01 09:10:58
4 [报告]
发表于 2014-04-25 17:44 |只看该作者
如果单独的已经可以匹配到了,你可以把两个单独的连接起来一起匹配。
只是需要在连接的中间加上个任意字符匹配,还有使用整体的lazzy匹配应当就可以了。

论坛徽章:
0
5 [报告]
发表于 2014-04-26 20:49 |只看该作者
连接起来匹配到以后 中间的多余字符如何去掉?

论坛徽章:
4
白羊座
日期:2013-11-05 10:26:09冥斗士
日期:2015-11-17 14:19:55白银圣斗士
日期:2015-11-17 15:13:0815-16赛季CBA联赛之新疆
日期:2016-04-01 09:10:58
6 [报告]
发表于 2014-04-26 22:25 |只看该作者
为什么不把之前独立工作的匹配作为子匹配串和re.group一起搭配使用呢?

论坛徽章:
0
7 [报告]
发表于 2014-04-27 15:03 |只看该作者
分别匹配 最后组合起来也是不行,对应不上;代码如下:
def getInfoFromPage(pattern,page):
    p = re.compile(pattern)
    result = p.findall(page)
    return result

pat_company = "<FONT color=#ff6600 style='FONT-FAMILY: 华文新魏; FONT-SIZE: 17pt; FONT-STYLE: normal; FONT-WEIGHT: bold'>[^<]*"
pat_info = "地址:[^<]*"

url = 'http://www.page.net.cn/s/1gzjx.php?num=10'
page = urllib2.urlopen(url)
data = page.read()
company = getInfoFromPage(pat_company,data)
print len(company)
info = getInfoFromPage(pat_info,data)
print len(info)
fd=open('result.txt','a')
for i in range(len(company) - 1):
    company_info = company[i] + ' ' + info[i]
    fd.write(company_info)
    fd.write('\n')
fd.close()

有其它办法吗?正则表达式还是用不熟啊

论坛徽章:
0
8 [报告]
发表于 2014-04-27 17:44 |只看该作者
回复 7# howema

这个网站做的太次了,我试着解析了一下,没有到地址层次,你可以很容易进一步解析。
  1. # coding=gbk

  2. import re
  3. import urllib2

  4. url = 'http://www.page.net.cn/s/1gzjx.php?num=10'
  5. page = urllib2.urlopen(url)
  6. txt = page.read()

  7. p0 = re.compile("(<TABLE.*?>.*?</table>)",re.M|re.DOTALL|re.UNICODE|re.IGNORECASE)
  8. p1 = re.compile('<FONT color=#ff6600.*?>(.*?)</FONT>',re.M|re.DOTALL|re.UNICODE|re.IGNORECASE)
  9. p2 = re.compile('<FONT color=#ffcccc.*?>(.*)</FONT>',re.M|re.DOTALL|re.UNICODE|re.IGNORECASE)


  10. data = []

  11. this = ["",""]

  12. for c in p0.findall(txt):
  13.     if 'bgColor=#ffeb99' in c:
  14.         try:                    # 第一个表不要
  15.             m = p1.search(c)
  16.             this[0] = m.group(1)
  17.         except:
  18.             continue

  19.     if 'bgColor=#6600ff' in c:
  20.         m = p2.search(c)
  21.         this[1] = m.group(1).replace("&nbsp","")
  22.         data.append(this)
  23.         this = ["",""]

  24. for a,b in data:
  25.     print a.decode("gbk").encode("utf_8"),":=",b.decode("gbk").encode("utf_8")
复制代码
结果:
  1. 广州杉幸精密机械有限公司 :=  电话:020-82308116(3线) 手机:13316055398 Email:pulleys&#64;21cn.com 联系人:吴先生 销售经理
  2. 广州巨盛机械科技有限公司 := 网址:<a href='http://www.jushengjixie.com'    target=_blank onmousedown='return clk(10866)'  rel='nofollow'><font color=#FF3333>www.jushengjixie.com</font></a> 地址:广州市天河区东圃镇珠村商业街1165号 电话:020-32233613 传真:020-32239799 手机:13719335639 Email:gzjs168@163.com 邮编:510655 联系人:刘智用先生
  3. 广州市丁丁自动化设备有限公司 := 网址:<a href='http://www.gzdingding.com'    target=_blank onmousedown='return clk(4652)'  rel='nofollow'><font color=#FF3333>www.gzdingding.com</font></a> 地址:广州市 中山八路新虹街48号荔景楼商务中心B座709室 电话:020-8193458981934528 传真:020-81937879 手机:13828437393 Email:gzdingding@tom.com: 邮编:510175 联系人:钟嘉丽
  4. 东莞市敏拓机械设备有限公司 :=  电话:0769-82281336 传真:0769-81761004 手机:13192033577 Email:mtchn@126.com 邮编:523850 联系人:洪敏
  5. 广州市扬华机械有限公司 :=  地址:广州市花都区新华镇镜湖大道东莞村 电话:020-86800080 Email:gz_yhg&#64;yahoo.com.cn 邮编:510800
  6. 宏高陶瓷机械公司 :=  地址:广州机场路 电话:020-86340235 Email:wintech&#64;tom.com 邮编:510000 联系人:梁小姐
  7. 广州泰和制钉机械厂 := 网址:<a href='http://www.staple-brad.cn'    target=_blank onmousedown='return clk(11282)'  rel='nofollow'><font color=#FF3333>www.staple-brad.cn</font></a> 地址:广州番禺 电话:020-84741696 手机:13928844723 联系人:张三连
  8. 广州市铠铭机电设备有限公司 :=  地址:广州市天河区东圃镇前进村石宦路10号A座首层 电话:(020) 82564237  传真:(020) 82564167  手机:13430388585 Email:kaiming8886&#64;yahoo.com.cn 邮编:510660 联系人:孙亚东
  9. 广州市益佳光学技术有限公司 := 网址:<a href='http://www.yjoptical.com/'    target=_blank onmousedown='return clk(10577)'  rel='nofollow'><font color=#FF3333>www.yjoptical.com/</font></a> 地址:广州市花都区三东大道河畔东路  电话:020-61816333 Email:yijia2007cn&#64;163.com 邮编:510800 联系人:陈佳俊
  10. 博华国际实业有限公司-骏骐五金冲压分公司 := 网址:<a href='http://www.gdbohua.com'    target=_blank onmousedown='return clk(4577)'  rel='nofollow'><font color=#FF3333>www.gdbohua.com</font></a> 地址:中国广东省广州市番禺区石基镇沙涌乡茶东工业区岗瓦路岗瓦圣1号 电话:862061905533 传真:862061905539 手机:13022051510 Email:tonyxiang&#64;126.com 邮编:516450 联系人:郑洁
复制代码

论坛徽章:
0
9 [报告]
发表于 2014-04-28 09:25 |只看该作者
谢谢,是网页内容不规则

论坛徽章:
0
10 [报告]
发表于 2014-04-28 10:04 |只看该作者
网页前面有好几个Table
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP