首页 > 解决方案 > javascript选择属性值包含某物

问题描述

第一次访问 Javascript,它看起来像:

请找到https://xueqiu.com/v4/statuses/user_timeline.json?page=1&user_id=4357540281

{ count: 20
, statuses: 
  [ { id            : 180
    , user_id       : 435
    , source        : '111'
    , title         : 'aa'
    , created_at    : 1621
    , retweet_count : 0
    , reply_count   : 1
    , Timebefore    : '05-20 5-15 8:00'
...
      id            : 181
    , user_id       : 436
    , source        : '111'
    , title         : 'bb'
    , created_at    : 1621
    , retweet_count : 0
    , reply_count   : 1
    , Timebefore    : '05-19 5-15 8:00'

我只想在以下条件下选择值:Timebefore包含值:'5 -20'。不知道为什么我可以实现属性选择。在 selenium 中,我可以尝试像 text contains sth 一样,在这里我希望它在包含特定日期之前 retuns timebefore 。我试过:

with requests.Session() as connection:
    connection.headers["User-Agent"] = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.86 YaBrowser/21.3.0.740 Yowser/2.5 Safari/537.36"
    _ = connection.get("https://xueqiu.com")
    user_timeline = connection.get("https://xueqiu.com/v4/statuses/user_timeline.json?page=1&user_id=4357540281").json()
    for status in user_timeline["statuses"]:
    status["TimeBefore": '05-20']

但它会返回:TypeError: unhashable type: 'slice'。提前致谢!

标签: javascript

解决方案


解决这个问题的最好办法是走钥匙和价值观。这使您可以查看 JSON 的结构。

import requests

with requests.Session() as connection:
    connection.headers["User-Agent"] = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.86 YaBrowser/21.3.0.740 Yowser/2.5 Safari/537.36"
    _ = connection.get("https://xueqiu.com")
    user_timeline = connection.get("https://xueqiu.com/v4/statuses/user_timeline.json?page=1&user_id=4357540281").json()
    for status in user_timeline['statuses']:
        date_string = str(status['timeBefore']).split(" ")[0]
        if '05-20' in date_string:
           print(date_string)
           # output
           05-20
           05-20
           05-20
           truncated...


推荐阅读