无法解码或读取用于计算字符串的网站URL

时间:2013-06-23 19:48:50

标签: python regex debugging python-2.7 count

我正在尝试使用下面的代码在网站中执行数据搜索和计数,你可以看到我在代码中添加了一些额外的打印用于调试,目前结果总是“0”,这对我说读取某种文件时出错。如果我打印名为html的变量,我可以清楚地看到我正在搜索的所有三个字符串都包含在html中,但如前所述,我的打印件都没有打印任何内容,最终打印计数只返回“0”。如你所见,我尝试了三种不同的方法,每次都有同样的问题。

import urllib2
import urllib
import re
import json
import mechanize

post_url = "url_of_fishermans_finds"
browser = mechanize.Browser()
browser.set_handle_robots(False)
browser.addheaders = [('User-agent', 'Firefox')]

html = browser.open(post_url).read().decode('UTF-8')

# Attempted method 1
print html.count("SEA BASS")

# Attempted method 2
count = 0
enabled = False
for line in html:
  if 'MAIN FISHERMAN' in line:
    print "found main fisherman"
    enabled = True
  elif 'SEA BASS' in line:
    print "found fish"
    count += 1
  elif 'SECONDARY FISHERMAN' in line:
    print "found secondary fisherman"
    enabled = False
print count

# Attempted method 3
relevant = re.search(r"MAIN FISHERMAN(.*)SECONDARY FISHERMAN", html)[1]
found = relevant.count("SEA BASS")
print found

这可能非常简单,任何评论或帮助都会非常感激。亲切的问候AEA

1 个答案:

答案 0 :(得分:2)

关于正则表达式方法#3,您似乎没有在运行计数之前对搜索结果进行分组。我没有您正在查看的HTML,但您也可能因使用'。'而遇到麻烦。如果您的两个搜索字词之间有换行符。考虑到这些问题,请尝试使用以下内容来纠正这些错误(注意:在Python 3语法中):

relevantcompile = re.compile("MAIN FISHERMAN(.*)SECONDARY FISHERMAN", re.DOTALL)
relevantsearch = re.search(relevantcompile, html)
relevantgrouped = relevantsearch.group()
relevantcount = relevantgrouped.count("SEA BASS")
print(relevantcount)

另外,请记住以上关于正则表达式搜索的区分大小写的注释。希望这会有所帮助:)