我想从远程PHP响应中提取URL。我当前的代码得到了链接变量响应,但是我怎么只能抓住响应的第一行,在这种情况下是一个URL?
在链接变量中查看PHP响应的第一行的URL:
http://test.awebsite.com/1.m3u8?token=454766879809809
Python代码:
req = urllib2.Request('http://www.somesite.com/test.php')
req.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:19.0) Gecko/20100101 Firefox/19.0')
response = urllib2.urlopen(req)
link = response.read()
使用print link
的完整PHP响应:
10:01:08 T:7688 NOTICE:
http://test.awebsite.com/1.m3u8?token=454766879809809
<!-- Start -->
<script type="text/javascript" src="http://1.js"></script>
<script type="text/javascript" src="http://1.js"></script>
<script type="text/javascript" src="http://3.js"></script>
<noscript><br><center><font color='#000000' face='Verdana' style='font-size: 11px; background-color:#FFFFFF'><a target='_blank' href='http://www.ads.com'><font color='#000000'>ads</font></a></font></center></noscript>
<!-- End -->
答案 0 :(得分:0)
您可以尝试按以下方式分割响应:
IBar
然后得到第一行:
lines = link.split("\n")
注意如果您分割的子字符串不在您的字符串中,您应该期望引发异常。一种方法可以像这样检查:
anwser = lines[1] # 1st line is lines[0], 2nd is lines[1], 3rd is lines[2] etc...
或者使用try-except语句:
first_line=""
if "\n" in link:
first_line = link.split("\n")[1] # Gets the same result as before in one line...
else:
print("Something went wrong...")
print(first_line)
我希望能回答你的问题!
答案 1 :(得分:0)
我决定通过编辑来澄清ant0nisk's answer中遗漏的一些内容,但我最终完全重写了它,所以我决定将其作为单独的答案发布。
您可以尝试这样splitting the response by lines:
lines = link.splitlines()
然后得到第一行:
anwser = lines[1] # 1st line is lines[0], 2nd is lines[1], 3rd is lines[2] etc...
请注意,如果link
由少于两行组成,则上面的行会引发异常IndexError
异常,如果未处理,则会终止您的程序,其中包含对您有意义的消息,但可能会使非程序员感到困惑。例如,如果您想要友好的错误消息或者计划B在单行或空请求的情况下该怎么做,您可以使用try-except语句处理错误:
try:
first_line = link.split("\n")[1]
except IndexError:
print("Response is too short! (expected at least 2 lines)")
else: # Everything OK
print(first_line)
捕获异常很昂贵。通常这不是问题,因为它是从异常场景中恢复时发生的。但是,如果经常引发异常,那么处理它并非特殊情况,使用if
代替try-except
可能会变得更快。