如何使用Python从远程PHP响应字符串中获取第一行URL?

时间:2015-11-27 17:17:19

标签: python

我想从远程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 -->

2 个答案:

答案 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 可能会变得更快。