刚接触 python,想解决个问题 2 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
182247236
V2EX    问与答

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

  •  
  •   182247236 2016-10-20 22:50:29 +08:00 1918 次点击
    这是一个创建于 3308 天前的主题,其中的信息可能已经有所发展或是发生改变。
    码如下:
    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     Solana     1213 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 23ms UTC 23:40 PVG 07:40 LAX 15:40 JFK 18:40
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86