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

2016-10-20 22:50:29 +08:00
 182247236
码如下:
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 ,可是我觉得太复杂不好,想改简单点
1514 次点击
所在节点    问与答
10 条回复
aihimmel
2016-10-20 22:55:53 +08:00
你需要 html 解析
Bs4 或者 lxml
popu111
2016-10-20 22:57:40 +08:00
太复杂。。。 WTF ?!


@aihimmel 你需要看帖
182247236
2016-10-20 22:58:00 +08:00
@aihimmel 下面的就调用的 bs4 模块,可是只能这样吗?我当时想着把下面的 print(link.get_text()) 以同样的方式套用到上面的那段码,结果不行。
Lonely
2016-10-20 22:58:44 +08:00
简单点就用正则好了
182247236
2016-10-20 23:02:44 +08:00
@popu111 因为 url = urlopen(GetPlayer)这段就可以把 url 提取出来了,可是包含了 /a 标签,我觉得应该是有办法简单点只提取 url 的,当然可能是我刚接触计算机语言不太懂 TT
182247236
2016-10-20 23:05:34 +08:00
@Lonely 我查查正则表达式
lxy
2016-10-20 23:14:15 +08:00
这还嫌复杂啊……那就用正则+requests
import re, requests
GetPlayer = '...'
re.search('>(.+?)<', requests.get(GetPlayer).text).group(1)
aihimmel
2016-10-20 23:15:43 +08:00
@popu111
@182247236
ok ,我眼残满级
182247236
2016-10-20 23:23:39 +08:00
@lxy 果然还是应该先过过基础...
stamaimer
2016-10-21 00:36:28 +08:00
用 xpath 提取 href 熟悉

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/314271

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX