0

我正在尝试使用下面的代码在网站中执行数据搜索和计数,您可以看到我在代码中添加了一些额外的打印以进行调试,目前结果始终为“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

4

1 回答 1

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)

另外,请记住上面关于正则表达式搜索区分大小写的评论。希望这可以帮助 :)

于 2013-07-27T21:29:03.517 回答