【问题标题】:Scrape/Parse betting odds using Python 2.7使用 Python 2.7 抓取/解析投注赔率
【发布时间】:2012-04-04 06:01:14
【问题描述】:

我正在尝试使用 Python 2.7 创建一个程序,该程序从不同的投注网站(例如 betfair、ladbrokes 等)检索投注赔率以进行统计分析。我对 python 还很陌生(我对所有的 IT 术语都感到很挣扎),但我已经做了一些研究,并提出了以下结构。

from urllib import urlopen
import re

response = urlopen('http://beta.betfair.com/football/event?id=26821411')
html = response.read()

jay = re.compile(b'.*id="m57290-sel1_105142518-58805-0-back"><span class="price">(.*)</span></button>')

jay2 = re.findall(jay,html)

print(jay2)

这应该去必发网站拉一定的赔率并打印出来,但我什么也没得到!

我也尝试过合并 Beautifulsoup,但我的 mac 似乎没有正确安装它或其他东西。我不断得到

“ImportError: 没有名为 beautifulsoup 的模块”

当我尝试从 BeautifulSoup 导入 BeautifulSoup 时。我尝试使用 easyinstall 进行安装,并且还运行了 setup.py 脚本。
scrapy 的类似场景。
我做了一些进一步的研究,Java/javascript 经常出现...
有人可以帮忙吗?

提前致谢

【问题讨论】:

  • 你的倾向是正确的。您需要比正则表达式更适合该任务的东西。 BeautifulSoup 是——或者至少在过去——仅仅是 Python 代码。这意味着,要安装它,您可以将文件放在 Python 路径上的任何位置。
  • 您是否尝试过找出问题所在?
  • @bernie 谢谢。这可能是一个非常愚蠢的问题,但鉴于我实际上只是从一两本 python 编程书籍中阅读了部分内容,很多这对我来说是新的。你如何手动“把在 Python 路径上的任何位置文件”Karl Knechtel 感谢您花时间提供帮助。它最有可能与这一行有关 "jay = re.compile(b'.*id="m57290-sel1_105142518-58805-0-back">(.*)')" 因为我能够使用相同的代码(即标题、标题等)抓取同一网站的其他部分。底部的 Skizz 答案似乎支持这一点......

标签: javascript python web-scraping python-2.7


【解决方案1】:

我发现当我的 Mac 上有多个 Python 版本时,很难确定我希望在哪个版本下安装模块。我通过使用 virtualenv 来解决它,然后使用 pip 一个一个地安装我需要的模块。下面是virtualenv的介绍:http://simononsoftware.com/virtualenv-tutorial/

基本上,一旦你安装了 virtualenv,你就可以创建一个独立的 python 环境,与其他一切隔离。该过程在终端窗口中如下所示:

创建虚拟 Python 环境

$ virtualenv --python=python2.7 env

激活它(所以它现在是 PATH 中的默认“python”)

$ source env/bin/activate

安装一些东西(请注意,您不需要“sudo”,因为这是您正在工作的任何目录中的本地 python 安装)

$ pip install scrapy

暂时完成虚拟 Python 环境后,像这样停用:

$ deactivate

【讨论】:

  • 谢谢....我已经成功安装了 Virtualenv,但是当我尝试创建一个虚拟 Python 环境时,我得到“-bash: $: command not found”...
  • “$”表示终端提示符,而不是您应该键入的内容。因此,对于第一个命令,请准确输入以下内容(不带引号),然后按回车键:“virtualenv --python=python2.7 env”
  • 我实际上都试过了,有和没有“$”。没有它,我最终会得到“...File”/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py”,第 1201 行,在 _execute_child raise child_exception OSError: [Errno 2] No这样的文件或目录”在我看来不正确......
  • 是的,这对我来说也不合适。你有安装 Xcode 吗?本主题可能会有所帮助:stackoverflow.com/questions/5658504/…
【解决方案2】:

每次调用页面时,"back-cell" id 都会改变, 所以你现有的正则表达式总是会失败 你用什么框架。

【讨论】:

  • 感谢您的输入....我假设您指的是这部分..“id="m57290-sel1_105142518-58805-0-back"。关于如何绕过的任何想法问题...
【解决方案3】:

大多数博彩网站(尤其是好的网站)都有不错的 xml 服务。我建议您解析投注赔率 XML,而不是解析网站。 本教程对初学者非常有用的 xml 解析:http://docs.python.org/2/library/xml.etree.elementtree.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-20
    • 2021-03-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多