跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 请问这种网页是不是 js 加密的?应该如何获取数据?
未分類
15 2 月 2021

请问这种网页是不是 js 加密的?应该如何获取数据?

请问这种网页是不是 js 加密的?应该如何获取数据?

資深大佬 : maloneleo88 3

http://zq.win007.com/analysis/1964531cn.htm

学了几天 python,实战败了,这种动态的 requests 不到,各种错误。

最后试了 selenium,可以拿到数据,也可以分析,但是太慢了,花费时间和人力没区别。

作为一枚小白,怎样才能拿到这种实施响应的数据?我觉得这个不是 ajax 请求到的 json 吧?也不是普通的 js 脚本。

这里是不是还有加密信息?我想得到对赛往绩的数据,应该从哪个地方入手?
这种页面数据,按网上的方法,搜索不到相关的 js 文件,望大佬不吝赐教。!!!

大佬有話說 (39)

  • 主 資深大佬 : maloneleo88

    想得到心理上的满足与快感吗?
    想展现男人的雄风吗?
    想站在众山之巅俯视苍生吗?

    那就快来回答我的问题吧! 🙂

  • 資深大佬 : matrix67

    var sOdds=[[‘未开场’,0,0,0.65,0,1.20,1.11,0.25,0.72,0.89,0.25,0.93,0.94,0.5,0.88,0.70,0.75,1.11,1.06,1,0.74,0.97,2.25,0.83,0.81,2.25,0.99,2.82,1.99,3.80,2.53,2.08,4.10,2.14,3.15,3.00,1.94,3.25,3.35,0,0,0,0,0,0,0],[’45’,0,0,1.17,0.25,0.71,0.47,0,1.63,0.98,0.5,0.88,0.96,0.25,0.90,1.08,1,0.76,5.26,0.5,0.03,0.81,2.25,0.99,1.12,1.25,0.73,2.66,2.03,3.95,14.00,1.01,17.00,2.00,3.15,3.30,2.35,2.25,4.00,1,0,0,0,0,0,0],[‘中场’,0,0,,,,,,,0.96,0.25,0.90,1.00,0.25,0.86,,,,,,,1.12,1.25,0.73,0.86,1,0.98,,,,,,,2.35,2.25,4.00,2.42,2.13,4.20,2,0,0,0,0,0,0],[’85’,0,0,,,,,,,1.00,0.25,0.86,0.43,0,1.75,,,,,,,0.86,1,0.98,3.70,0.5,0.11,,,,,,,2.42,2.13,4.20,7.90,1.09,13.00,3,0,0,0,0,0,0]];maketable();

  • 主 資深大佬 : maloneleo88

    @matrix67 这个是 Odds,Odds 是赔率,不是我要的信息。我想要对赛往纪,或者近期战绩里面的信息。 劳烦再看一下,这是 js 加密的吗?

  • 資深大佬 : gongym

    数据都在页面里呢,下载下来 html,搜索 v_data,Vs_hOdds 就剋看到了

  • 主 資深大佬 : maloneleo88

    @gongym 我的好哥哥,先不管数据在不在页面里。我现在是连 requests 页面都不可以啊。 只能总 selenium,毫无意义呀,慢的要死

  • 資深大佬 : darer

    UA cookie refer 一般也就判定这几个吧

  • 資深大佬 : input2output

    加一下
    User-Agent
    Accept

  • 資深大佬 : darer

    https://sm.ms/image/PRSijLcgFdl95Nq
    试了个 UA 就爬到了

  • 資深大佬 : v2sir

    作为小白, 应该好好学习。如果连这么简单的页面都提取不了。应该回过头去重新学, 或者学会放弃。

  • 主 資深大佬 : maloneleo88

    @darer
    XHR 里面有两个包
    http://zq.win007.com/analysis/odds/1964531.htm?1613372332000
    http://zq.win007.com/xml/position/footballanaly.txt?r=0071613372333000

    第一个好像不是,只是赔率信息,第二个什么也看不到。

  • 主 資深大佬 : maloneleo88

    @input2output 谢谢,马上去试,真的不懂

    @v2sir 不耻下问,自学好难,而且没几天,是想好好学,可没有正八经的教程,视频教程看看就缺东西了,正经书里也不讲这些。前面一直学 python 基础语法了,然后发现,爬虫跟那个关系根本不大。真是醉了。

    @darer 谢谢哈,我还没太懂,这就去试试,万分感谢!

  • 主 資深大佬 : maloneleo88

    @darer

    import requests
    r = requests.get
    UA = ‘Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36 Edg/88.0.705.68’
    res = r(‘http://zq.win007.com/analysis/1964531cn.htm’,headers={“User-Agent”:UA})
    res.encoding = ‘utf-8’
    print(res.text)

    我抓下来了,对赛往绩和近期战绩都是空的。直接拿,拿不到的

  • 主 資深大佬 : maloneleo88

    @v2sir 看了你以往评论,一句有用的都没有,是不是现实生活不如意,蹲在网线上泄愤?继续吧~ two be number 1

  • 資深大佬 : sairoa

    把数据刷新的请求复制成 curl 格式,然后用 https://curl.trillworks.com/转成 python 的代码,最后就按照自己需求改请求数据喽。看了一下这网站,不让右键,不过数据还是能抓下来的。

  • 資深大佬 : v2sir

    @maloneleo88 笑了,是谁没得到答案开始泄愤的? 我叫你回头看看补充基本知识就成泄愤了? 你是婴儿还是残疾?一点小问题就像别人欠你似的? 你以为你谁啊? 我非要告诉你答案?

  • 資深大佬 : tan9p

    哈哈,仿佛看到了多年前的自己,祝好运

  • 資深大佬 : gongym

    @maloneleo88 下载下来 html,搜索 v_data,Vs_hOdds 就看到数据了,具体逻辑是在 func.js 里面的 init 和 init_vs 方法,如果 div 的 id 是 v,就获取 v_data 赋值给 data,渲染 table (除了数据)。然后在 init_vs 方法中执行 showOdds_h 方法和 showOdds_s 方法,加载数据。看了下方法就是获取 Vs_hOdds 和 Vs_eOdds 加载数据。你要的数据。直接从 html 中搜就有了。就在 script 标签中。是加载页面的时候就有的。但是如果不执行 js 方法这个数据是不会渲染到页面上的。

  • 主 資深大佬 : maloneleo88

    @gongym
    @tan9p
    @sairoa
    @darer

    谢谢大家里,数据是不直接显示的,刚刚我找到了。
    v_data 是对赛 h_data 是主队近期战绩 等等等 , 接下来只要解析了。谢谢大家! 万分感谢!!!

    万万分感谢。还是马虎了。粗心真不适合研究这东西,还是比较适合搬砖。

    @v2sir 开始没生气啊,看你回复就上火了,每帖带着一股酸味,你自己看看吧,懒得搭理你。

  • 資深大佬 : musi

    首先,requests 是用来发请求的,所以不知道你说的“动态”是个啥意思。
    其次,selenium 可以拿到,这里要分析两个方面,是请求的不对还是解析数据不对
    再者,看评论,你现在已经请求成功了,但还是没拿到数据,这就是数据解析的问题了,看了一下是写在 js 里,可以尝试用正则或者其他方法提取出来转成 json
    最后,有时候实战不是你学了这单个方面的知识就可以爬的,就拿爬虫来讲,有些网站做了反扒就不是你单学个基础 python 就能爬得出来的,刚学习还是找个简单点的,增强自己的信心

  • 主 資深大佬 : maloneleo88

    @gongym 大哥解释的很透彻,看代码头疼直接保存成 html 了,一看啥也没有,就想是不是又用 js 之类的。后来挨个看代码找到了。感觉看到曙光了,祝各位热心肠新年快乐!

  • 主 資深大佬 : maloneleo88

    @musi 这些概念都是很模糊。十几年前也做过网页玩,不可同日而语。难,岁数大了脑袋也不好用了。从头学是不可能从头学了,学会了就该 40 了。主要目标是干点什么,马上能用的起来就行。有些实在爬不了的只能用 selenium 了,毕竟简单,就是太慢。

    我再去埋汰钻研几小时。早来问的话就不需要花 2 天学 selenium 了。 贴段昨天写的,很乱,有点像狗啃的。

    import requests
    import re
    from selenium import webdriver
    from lxml import etree
    from time import sleep
    #无头浏览模式
    from selenium.webdriver.firefox.options import Options
    options = Options()
    options.add_argument(‘–headless’)

    #定义解析详情页函数
    def analysis():
    bro = webdriver.Firefox(options=options)
    #定义要访问的目标
    analysislink = vlink
    #打开浏览器访问
    bro.get(analysislink)

    #获取源码数据
    page_text = bro.page_source

    #解析数据。实例化 etree
    tree = etree.HTML(page_text)
    #获取主队名称,链接,本次得分
    homeName = tree.xpath(‘//div[@class=”analyhead”]/div[@class=”home”]/a/text()’)[0]
    homeLink = tree.xpath(‘//div[@class=”analyhead”]/div[@class=”home”]/a/@href’)[0]
    homeScore = tree.xpath(‘//div[@class=”end”]/div[1]/text()’)[0]
    #获取客队名称,链接,本次得分
    guestName = tree.xpath(‘//div[@class=”analyhead”]/div[@class=”guest”]/a/text()’)[0]
    guestLink = tree.xpath(‘//div[@class=”analyhead”]/div[@class=”guest”]/a/@href’)[0]
    guestScore = tree.xpath(‘//div[@class=”end”]/div[3]/text()’)[0]
    # print(homeName,guestName,homeLink,guestLink,homeScore,guestScore)

    #获取上一次比赛主队的 ID 链接,客队的 ID 链接,双方比分,截取上次主队得分,截取上次客队得分。
    try:
    last_homeLink = tree.xpath(‘//div[@id=”v”]//tr[3]/td[3]/a/@href’)[0]
    last_guestLink = tree.xpath(‘//div[@id=”v”]//tr[3]/td[6]/a/@href’)[0]
    lastScore = tree.xpath(‘//div[@id=”v”]//tr[3]/td[4]/a/font/text()’)[0]
    last_homeScore = lastScore[0]
    last_guestScore = lastScore[-1]

    #a1 本次主队链接+本次主队得分。a2 本次客队链接+本次客队得分,b1 上次主队链接+得分,b2 上次客队链接+得分
    a1 = homeLink + homeScore
    a2 = guestLink + guestScore
    b1 = last_homeLink + last_homeScore
    b2 = last_guestLink + last_guestScore
    #如果本次主队链接+得分等于上次主队链接+得分或者等于上次客队链接+得分
    #然后看本次客队链接+得分是否等于上次主队链接+得分或客队链接+得分
    #如果符合这两个条件,续写入 saiguo.html 相关信息(这里还没有给链接添加超链)
    if a1 == b1 or a1 ==b2:
    if a2 == b1 or a2 == b2:
    print(homeName + ‘ ‘ + lastScore + ‘ ‘ + guestName + ‘n’)
    print(analysislink + ‘n’)
    with open(‘./saiguo.html’,’a’) as fp:
    fp.write(homeName + ‘ ‘ + lastScore + ‘ ‘ + guestName + ‘n’)
    fp.write(analysislink + ‘n’)
    sleep(2)
    bro.close()
    else:
    bro.quit()
    else:
    bro.quit()
    #如果没有找到上一次的对往战绩则睡眠 1 秒然后退出浏览器
    except:
    bro.close()

    if __name__ == “__main__”:
    #浏览器伪装
    headers = {
    ‘User-Agent’: ‘Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36 Edg/88.0.705.68’
    }
    kw = input(‘输入赛程年月日采集数据:’)
    #response 函数为第一次抓取的完赛列表
    response = requests.get(‘http://bf.win007.com/football/Over_’ + kw + ‘.htm’,headers = headers)
    #列表编码为 gb2312,所以需要转一下为 GBK,负责无法正常显示
    response.encoding = ‘GBK’
    #转换的文字信息存入 page 变量
    page = response.text

    #提取比赛分析数字,定义正则表达,第二行找到所有
    pattern = r’analysis(([sS]*?))’
    numbers = re.findall(pattern,page,re.S)
    for vlink in numbers:
    #拼接处完整 URL
    vlink = ‘http://zq.win007.com/analysis/’ + vlink + ‘cn.htm’
    analysis()
    print(‘采集完成!’)

  • 資深大佬 : v2sir

    @maloneleo88 你也知道懒得搭理人? 你 requests 开始连 UA 都不加, 你叫我怎么想? 我第一个反应就是你是不是在消遣人。

  • 資深大佬 : musi

    @maloneleo88 selenium 如果你电脑内存大的话可以开多进程,也就是多个浏览器实例,我之前用 selenium hub 一次开了二十多个,稍微快了一点,重要的是这种方法可以安装浏览器插件对网页进行操作

  • 資深大佬 : blodside

    @v2sir 大家都是从不会开始的,大过年的老哥别那么大火气了

  • 資深大佬 : codists

    “`python
    from selenium import webdriver

    url = ‘http://zq.win007.com/analysis/1964531cn.htm’
    browser = webdriver.Chrome()
    browser.get(url)
    try:
    tbody = browser.find_elements_by_css_selector(‘#table_v tr’)
    for td in tbody[2:]:
    print(td.text.split(‘ ‘))
    except:
    print(‘NoSuchElement’)

    “`
    输出示例:
    “`python
    [‘墨西乙’, ’20-09-14′, ‘塞拉亚’, ‘3-0(1-0)’, ‘3-3’, ‘亚特兰特 1’, ‘1.03’, ‘半球’, ‘0.79’, ‘1.95’, ‘3.17’, ‘3.70’, ‘负’, ‘输’, ‘大’]
    [‘墨西乙’, ’20-01-26′, ‘塞拉亚’, ‘1-0(1-0)’, ‘4-5’, ‘亚特兰特’, ‘1.08’, ‘平 /半’, ‘0.76’, ‘2.45’, ‘2.68’, ‘3.11’, ‘负’, ‘输’, ‘小’]
    [‘墨西乙’, ’19-10-25′, ‘1 亚特兰特’, ‘2-1(0-1)’, ‘3-2’, ‘塞拉亚 1’, ‘1.06’, ‘半球’, ‘0.76’, ‘2.05’, ‘3.11’, ‘3.45’, ‘胜’, ‘赢’, ‘大’]
    [‘墨西乙’, ’19-03-16′, ‘亚特兰特’, ‘1-2(1-1)’, ‘3-1’, ‘塞拉亚’, ‘0.82’, ‘半 /一’, ‘1.02’, ‘1.61’, ‘3.60’, ‘4.93’, ‘负’, ‘输’, ‘大’]
    [‘墨西乙’, ’18-10-21′, ‘2 塞拉亚’, ‘1-0(1-0)’, ‘1-3’, ‘亚特兰特 1’, ‘1.03’, ‘平手’, ‘0.81’, ‘2.67’, ‘3.11’, ‘2.45’, ‘负’, ‘输’, ‘小’]
    [‘墨西乙’, ’18-01-21′, ‘塞拉亚’, ‘2-1(2-1)’, ‘2-4’, ‘亚特兰特’, ‘0.96’, ‘平 /半’, ‘0.86’, ‘2.14’, ‘3.13’, ‘3.19’, ‘负’, ‘输’, ‘大’]
    [‘墨西乙’, ’17-08-05′, ‘亚特兰特’, ‘1-0(0-0)’, ‘3-3’, ‘塞拉亚’, ‘1.12’, ‘平 /半’, ‘0.71’, ‘2.36’, ‘3.07’, ‘2.82’, ‘胜’, ‘赢’, ‘小’]
    [‘墨西乙’, ’17-02-04′, ‘亚特兰特’, ‘1-2(1-2)’, ‘6-2’, ‘塞拉亚’, ‘0.85’, ‘半球’, ‘0.97’, ‘1.87’, ‘3.29’, ‘3.84’, ‘负’, ‘输’, ‘大’]
    [‘墨西乙’, ’16-11-27′, ‘塞拉亚’, ‘0-0(0-0)’, ‘7-3’, ‘亚特兰特’, ‘0.82’, ‘半球’, ‘1.02’, ‘1.84’, ‘3.35’, ‘3.83’, ‘平’, ‘赢’, ‘小’]
    [‘墨西乙’, ’16-11-24′, ‘亚特兰特’, ‘1-0(0-0)’, ‘3-0’, ‘塞拉亚’, ‘0.94’, ‘平 /半’, ‘0.90’, ‘2.11’, ‘3.15’, ‘3.15’, ‘胜’, ‘赢’, ‘小’]
    [‘近’, ’10’, ‘场,’, ‘胜出’, ‘3’, ‘场,平局’, ‘1’, ‘场,输’, ‘6’, ‘场,’, ‘胜率:30%’, ‘赢盘率:40%’, ‘大球率:50%’, ‘单率:90%’]
    “`

  • 資深大佬 : gimp

    “不耻下问” 意思是指向地位、学问不如自己的人请教而不感到丢面子。

    向别人问问题应该用 “不吝赐教”

  • 資深大佬 : qazwsxkevin

    学习是一回事,
    如果真要拿这个做什么事情,体育数据方面还真不如直接买数据回来划算,如飞 jing,sopr*rader 之类,比起去爬这些网页要丰富

  • 資深大佬 : Lemeng

    怎么评论区好像吵起来了?

  • 資深大佬 : www5070504

    不耻下问 有意思嗷

  • 資深大佬 : learningman

    @blodside 但我再菜逼的时候也不会像主这样生猛啊
    这种骂你一句里面都是有有用的信息的,算指导的

  • 資深大佬 : xJogger

    @sairoa
    +1
    复制为 curl 请求,再用 https://curl.trillworks.com/ 转成 python 代码简直太实用了,好多机械性步骤都省了。

  • 資深大佬 : LudwigWS

    @gimp 应该说请不吝赐教

  • 主 資深大佬 : maloneleo88

    @musi 嗯,好处就是用处广泛。但跟直接拿数据响应没法比啊,速度差太多了。

    @blodside 好的。

    @codists 谢谢雄对,在研究筛选数据。

    @qazwsxkevin 就是爱好,喜欢看足球篮球,有时候也玩,那种数据类卖的很贵吧。也没盈利目的。

    @gimp 那就不耻上问吧,呵呵

    问问题,而已。 你帮我, 我帮他。。

    愿意怼人玩去微博不好么,没别的,就是看不惯有些人

  • 主 資深大佬 : maloneleo88

    @xJogger
    @sairoa

    谢谢,随后研究下吧,看起来有点深奥。

  • 主 資深大佬 : maloneleo88

    不吝赐教,主就说了,不要咬文嚼字了

    众生百相~ 😀

  • 資深大佬 : qazwsxkevin

    @maloneleo88 不知道价格,只是知道国内有几家这样的网站是向这些相同的数据公司买的数据(貌似有版权)

  • 主 資深大佬 : maloneleo88

    @qazwsxkevin 纯属个人喜好,飞鲸,纳米这些数据公司有卖接口,少说一年几万,太贵了

  • 資深大佬 : Cusmate

    第一层主的回复竟有点别致

  • 主 資深大佬 : maloneleo88

    刚刚把这个爬虫彻底写好了(实际是三个,前,今,后),包括异常。

    用了一个星期从什么也不会到 requests 找不到数据,selenium (死慢),再到昨天来问问题,终于拨云见日。

    隆重感谢
    @matrix67
    @gongym
    @darer
    @sairoa

    简单的爬虫看来以后我能照着这个框架慢慢举一反三了。感谢大家! 万分感谢,这几天天天就睡五个小时没白熬~欣喜至极!

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具