python/ target=_blank class=infotextkey>python脚本提取url超链接中域名与端口
代码:
#!/usr/bin/python
#
import urllib
proto, rest = urllib.splittype("http://www.baidu.com/11/12.htm")
host, rest = urllib.splithost(rest)
print host
host, port = urllib.splitport(host)
if port is None:
port = 80
print port
根据抓取网页的程序抓取所需的网页,然后再对该网页的源代码进行分析,获取指定标签的url。boss让我们先使用正则表达式和python去实现这个功能。
对正则表达式的学习,^这个符号表示某个字符必须在一个string的起始处,而$表示某个字符必须在一个String的结尾处。在弄的时候,以为^是表示String以^后面的字符为起始是一个无意义的符号。结果调试了半天没有弄明白。
而对于python对正则表达式的支持,包括p=re.compile(""), p.match(String), p.search(String), p.findall(string)。刚开始使用match,发现只返回一个值就停止了。这下遇到问题,我开始思考到底为什么match不能打印之后的内容。查文档,发现有个内容自己漏掉了,原来这个函数值要找到一个匹配项就停止了。只有findall才能够发现很多项。
调试的时候,发现了很多的问题。
一是不会调试,调试先用小数据调试,在变换数据类型调试,看看到底哪种数据产生什么输出,这样可定位问题产生的位置,分析该位置上的要素与其相邻要素产生了什么不互补连续的问题,便于修改要素,使程序互补连续;
二是自己看资料的时候不够仔细,没有带着问题去看文档,一旦带着问题去看文档了,就能够注意到很多的细节问题,避免很多时间的浪费。