小编gdo*_*371的帖子

“响应对象没有属性‘body’”

我使用以下代码模仿网页上的 XHR 请求,以在屏幕上选择不同的选项卡按钮时更新表对象的内容:

import requests

url = 'http://www.whoscored.com/stageplayerstatfeed/?field=1&isAscending=false&orderBy=Rating&playerId=-1&stageId=9155&teamId=32"'

params = {'d': date.strftime('%Y%m'), 'isAggregate': 'false'}
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36'}

response = requests.get(url, params=params, headers=headers)

fixtures = response.body
#fixtures = literal_eval(response.content)
print fixtures 
Run Code Online (Sandbox Code Playgroud)

这引发了帖子标题中的错误。我猜我需要在语句中以某种方式添加参数“body” requests.get(),但我不确定具体如何添加。有人可以帮忙吗?

谢谢

python xmlhttprequest

5
推荐指数
1
解决办法
1万
查看次数

尝试解析内容时,XHR请求URL表示不存在

在使用Scrapy构建我的问题的完整解决方案之前,我发布了一个我想要做的简单版本:

import requests

url = 'http://www.whoscored.com/stageplayerstatfeed/?field=1&isAscending=false&orderBy=Rating&playerId=-1&stageId=9155&teamId=32"'

params = {'d': date.strftime('%Y%m'), 'isAggregate': 'false'}
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36'}

response = requests.get(url, params=params, headers=headers)

fixtures = response.body
#fixtures = literal_eval(response.content)
print fixtures 
Run Code Online (Sandbox Code Playgroud)

此代码表示上述URL不存在.该URL与您从此页面主表的"总体"标签切换到"主页"标签时提交的XHR请求相关:

http://www.whoscored.com/Teams/32/
Run Code Online (Sandbox Code Playgroud)

如果您在Google Developer Tools的控制台中激活XHR日志记录,则可以以字典的形式(这是预期的格式)查看XHR请求和从服务器发送的响应.

任何人都可以告诉我为什么上面的代码没有返回我期望看到的数据?

谢谢

python xmlhttprequest web-scraping python-requests

5
推荐指数
1
解决办法
1万
查看次数

json.loads 不替换撇号

我有一个 json 对象,我正在加载它并用双引号替换单引号。其语法是:

response = json.loads(response.text.replace("'", '"'))
Run Code Online (Sandbox Code Playgroud)

在我的数据中,我有采用以下格式的键/值对:

"name":"John O'Shea"
Run Code Online (Sandbox Code Playgroud)

这导致我得到以下回溯:

Traceback (most recent call last):
  File "C:\Python27\Whoscored\Test.py", line 204, in <module>
    response = json.loads(response.text.replace("'", '"').replace(',,', ','))
  File "C:\Python27\lib\json\__init__.py", line 338, in loads
    return _default_decoder.decode(s)
  File "C:\Python27\lib\json\decoder.py", line 366, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "C:\Python27\lib\json\decoder.py", line 382, in raw_decode
    obj, end = self.scan_once(s, idx)
ValueError: Expecting ',' delimiter: line 1 column 7751 (char 7750)
Run Code Online (Sandbox Code Playgroud)

我实际上不想替换上面的名称中的撇号,但我认为我的 json.loads 语句会将我的键/值对转换为:

"name":"John O"Shea"
Run Code Online (Sandbox Code Playgroud)

我假设这也会失败。我需要知道的是:

1)为什么我的 json.loads 语句在加载期间没有替换字符串中的撇号?2)转义字符串中的撇号以便它们不会导致错误但仍显示在负载中的最佳方法是什么?

我在较大的字符串上使用了 json 测试器来确认没有其他错误会阻止对象正常工作,但事实并非如此。 …

python json

4
推荐指数
1
解决办法
7592
查看次数

仅当某个字符串不直接跟在另一个特定字符之后时,才在该字符上拆分字符串

我有以下代码行,它data2根据空白实例将字符串拆分为一个列表:

string_list = data2.split()
Run Code Online (Sandbox Code Playgroud)

但是,在我的某些数据中,格式中包含日期"28, Dec"。上面的代码在我不想要的日期和月份之间的空白处拆分。有没有办法我可以说“在空白处拆分,但如果在逗号之后就不行”?

python string

3
推荐指数
1
解决办法
2781
查看次数

AttributeError:“模块”对象没有属性“Api”

我编写了一些基本的 Python 代码来尝试在 Twitter 上验证我的凭据:

import twitter

api = twitter.Api(consumer_key='',
                      consumer_secret='',
                      access_token_key='',
                      access_token_secret='')
Run Code Online (Sandbox Code Playgroud)

但这样做时我收到以下错误消息:

Traceback (most recent call last):
  File "C:\Python33\nettest.py", line 3, in <module>
    api = twitter.Api(consumer_key='',
AttributeError: 'module' object has no attribute 'Api'
Run Code Online (Sandbox Code Playgroud)

谁能看到我做错了什么吗?我尝试过对此代码的变体,但它们似乎都与我正在使用的 twitter 1.14.2 的 api 部分有关。我已通过 pip 3.3将此模块安装到我的 python 3.3 目录中。当我查看 lib>site_packages>twitter 时,我可以看到安装了一个名为 api 的模块。我真的不确定出了什么问题,因为这看起来应该是一段简单的运行代码。

有任何想法吗?

python twitter

3
推荐指数
1
解决办法
9808
查看次数

正则表达式出现不平衡括号错误

我使用以下正则表达式从网站 Javascript 数据源获取包含在以下字符模式中的所有数据

[[]]);
Run Code Online (Sandbox Code Playgroud)

我正在使用的代码是这样的:

regex = r'\[\[.*?\]]);'
        match2 = re.findall(regex, response.body, re.S)
        print match2
Run Code Online (Sandbox Code Playgroud)

这会抛出一条错误消息:

    raise error, v # invalid expression
sre_constants.error: unbalanced parenthesis
Run Code Online (Sandbox Code Playgroud)

我认为我可以相当安全地假设这是由正则表达式中的右括号引起的。如何定义我想要的正则表达式而不出现此错误?

谢谢

python regex json scrapy

3
推荐指数
1
解决办法
3万
查看次数

ValueError('不能用编译模式处理标志参数')

我在 Windows Vista 64 位上使用 Python.org 版本 2.7 64 位。我正在使用带有 Scrapy 的正则表达式来解析以下页面中名为“Datastore.prime”的第一个 Javascript 项目中包含的数据:

链接这里 我使用的正则表达式是这样的:

regex = re.compile('DataStore\.prime\(\'standings\', { stageId: \d+ }.*')
        match2 = re.findall(regex, response.body, re.S)
        match3 = str(match2)
        match3 = match3.replace('<a class="w h"', '').replace('<a class="w a"', '').replace('<a class="d h"', '') \
                 .replace('<a class="d a"', '').replace('<a class="l h"', '').replace('<a class="l a"', '') \
                 .replace('title=', '')
        print match3
Run Code Online (Sandbox Code Playgroud)

然而,这在这篇文章的标题中引发了错误:

     raise ValueError('Cannot process flags argument with a compiled pattern')
 exceptions.ValueError: Cannot process flags argument with a compiled pattern
Run Code Online (Sandbox Code Playgroud)

任何人都可以看到问题是什么?

谢谢

python regex scrapy

3
推荐指数
1
解决办法
5729
查看次数

将多个列表压缩在一起?

我有以下代码:

zero = ('one','two','three','four')

one   = '1.0,4.5,5.5,*,2.5,2.8,5.3,*,1.75,4.0,5.75,*,1.0,4.1,5.1,*,2.25,4.75,7.0,*,2.2,5.4,7.6,*,3.0,3.0,6.0,*,1.2,3.55,4.75,*,1.5,4.66666666667,6.16666666667,*,2.0,3.0,5.0,*,1.5,4.33333333333,5.83333333333,*,2.33333333333,2.8,5.13333333333,*,1.5,4.0,5.5,*,1.0,4.66666666667,5.66666666667,*,1.5,3.0,4.5,*,2.5,3.5,6.0,*,1.33333333333,3.4,4.73333333333,*,2.0,3.0,5.0,*,1.5,2.2,3.7,*,3.0,2.7,5.7,*,'
two   = '2.8,*,2.6,*,3.66666666667,*,4.0,*,1.5,*,2.16666666667,*,2.2,*,2.5,*,2.83333333333,*,2.8,*,2.83333333333,*,2.0,*,1.75,*,3.0,*,3.0,*,1.4,*,3.75,*,1.6,*,3.5,*,2.8,*,'

test = one, two = one.split("*,"),two.split("*,")
print test
print("\n".join("".join(x) for x in zip(one,two)))
Run Code Online (Sandbox Code Playgroud)

这允许我将我的两个列表压缩在一起以获得如下所示的输出:

1.0,4.5,5.5,2.8,
2.5,2.8,5.3,2.6,
1.75,4.0,5.75,3.66666666667,
1.0,4.1,5.1,4.0,
2.25,4.75,7.0,1.5,
2.2,5.4,7.6,2.16666666667,
3.0,3.0,6.0,2.2,
1.2,3.55,4.75,2.5,
1.5,4.66666666667,6.16666666667,2.83333333333,
2.0,3.0,5.0,2.8,
1.5,4.33333333333,5.83333333333,2.83333333333,
2.33333333333,2.8,5.13333333333,2.0,
1.5,4.0,5.5,1.75,
1.0,4.66666666667,5.66666666667,3.0,
1.5,3.0,4.5,3.0,
2.5,3.5,6.0,1.4,
1.33333333333,3.4,4.73333333333,3.75,
2.0,3.0,5.0,1.6,
1.5,2.2,3.7,3.5,
3.0,2.7,5.7,2.8,
Run Code Online (Sandbox Code Playgroud)

我一直在尝试使用for循环将许多列表压缩在一起的几种不同方法,但我没有运气.是否可以同时将两个以上的列表压缩在一起,或者是否有更好的方法来实现我想要的?

谢谢

python list

3
推荐指数
1
解决办法
2691
查看次数

将字典键从字符串更改为整数

我试图使用以下代码将字典的键从字符串转换为整数:

b = {"1":0,"2":0,"3":0,"4":0,"5":0}

for newkey in b:
        newkey[key] = int(newkey[key])
print b   
Run Code Online (Sandbox Code Playgroud)

但是这会产生以下错误:

Traceback (most recent call last):
  File "C:\Python27\counter2", line 22, in <module>
    newkey[key] = int(newkey[key])
NameError: name 'key' is not defined
Run Code Online (Sandbox Code Playgroud)

我希望最终输出看起来像这样:

b = {1:0,2:0,3:0,4:0,5:0}
Run Code Online (Sandbox Code Playgroud)

谁能告诉我我做错了什么?

谢谢

python dictionary python-2.7

2
推荐指数
1
解决办法
4898
查看次数

Python 3并发.futures - 并行处理for循环

如果我正确理解了concurrent.futuresPython 3 中的模块是如何工作的,则以下代码:

import concurrent.futures
import threading

# Simple function returning a value
def test(i):

    a = 'Hello World\n'
    return a


def main():
    output1 = list()

    with concurrent.futures.ThreadPoolExecutor() as executor:

        # psdd iterator to test function
        for out1 in executor.map(test, range(0, 10)):
            # append returned result
            output1.append(out1)

            # confirm output
            print(output1)
            print("Task Executed {}".format(threading.current_thread()))


if __name__ == '__main__':
    main()
Run Code Online (Sandbox Code Playgroud)

...执行以下功能:

  1. 将 for 循环传递给名为 的函数test()
  2. 并行处理循环,而不是串行处理。

然而,我真正想要的是在我的函数中并行处理循环,main()如下所示:

import concurrent.futures
import threading


def main():
    output1 = …
Run Code Online (Sandbox Code Playgroud)

python-3.x concurrent.futures

2
推荐指数
1
解决办法
1万
查看次数