V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
182247236
V2EX  ›  问与答

刚接触 python,想解决个问题 2

  •  
  •   182247236 · 2016-10-20 22:50:29 +08:00 · 1604 次点击
    这是一个创建于 2962 天前的主题,其中的信息可能已经有所发展或是发生改变。
    码如下:
    PID = 'lKGXIQa'

    GetPlayer = "http://213432.com/liveforapp.php?cid={cid}&appid={appid}" .format(cid=PID,appid="01")

    from urllib.request import urlopen
    from pprint import pprint
    from bs4 import BeautifulSoup

    url = urlopen(GetPlayer)
    print(url.read())
    这样我就能得出
    b'<a href="http://213432.com/live.php?token=dH0xNDc2XTU3NDc2JmM9bEtHWElRYSZhPTAxJnY9ZWJhZGY|">http://213432com/live.php?token=dH0xNDc2XTU3NDc2JmM9bEtHWElRYSZhPTAxJnY9ZWJhZGY|</a>'
    问题是我只想得出 url ,因为待会要用...html 标签什么的没用,网上查了查好多没用的资料 TT ,有什么办法吗?
    我之前是这么写的
    PID = 'lKGXIQa'

    GetPlayer = "http://12345.com/liveforapp.php?cid=%s" %PID +'&appid=S01'

    from urllib.request import urlopen
    from pprint import pprint
    from bs4 import BeautifulSoup

    html = urlopen(GetPlayer)

    bs_obj = BeautifulSoup(html,'html.parser')

    for link in bs_obj.findAll('a'):
    print(link.get_text())
    这么可以得出我需要的 url ,可是我觉得太复杂不好,想改简单点
    10 条回复    2016-10-21 00:36:28 +08:00
    aihimmel
        1
    aihimmel  
       2016-10-20 22:55:53 +08:00 via Android
    你需要 html 解析
    Bs4 或者 lxml
    popu111
        2
    popu111  
       2016-10-20 22:57:40 +08:00 via Android
    太复杂。。。 WTF ?!


    @aihimmel 你需要看帖
    182247236
        3
    182247236  
    OP
       2016-10-20 22:58:00 +08:00
    @aihimmel 下面的就调用的 bs4 模块,可是只能这样吗?我当时想着把下面的 print(link.get_text()) 以同样的方式套用到上面的那段码,结果不行。
    Lonely
        4
    Lonely  
       2016-10-20 22:58:44 +08:00 via iPhone
    简单点就用正则好了
    182247236
        5
    182247236  
    OP
       2016-10-20 23:02:44 +08:00
    @popu111 因为 url = urlopen(GetPlayer)这段就可以把 url 提取出来了,可是包含了 /a 标签,我觉得应该是有办法简单点只提取 url 的,当然可能是我刚接触计算机语言不太懂 TT
    182247236
        6
    182247236  
    OP
       2016-10-20 23:05:34 +08:00
    @Lonely 我查查正则表达式
    lxy
        7
    lxy  
       2016-10-20 23:14:15 +08:00
    这还嫌复杂啊……那就用正则+requests
    import re, requests
    GetPlayer = '...'
    re.search('>(.+?)<', requests.get(GetPlayer).text).group(1)
    aihimmel
        8
    aihimmel  
       2016-10-20 23:15:43 +08:00 via Android
    @popu111
    @182247236
    ok ,我眼残满级
    182247236
        9
    182247236  
    OP
       2016-10-20 23:23:39 +08:00
    @lxy 果然还是应该先过过基础...
    stamaimer
        10
    stamaimer  
       2016-10-21 00:36:28 +08:00 via iPhone
    用 xpath 提取 href 熟悉
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2299 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 16:11 · PVG 00:11 · LAX 08:11 · JFK 11:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.