我对python很新.我正在尝试解析URL文件,只留下域名.
我的日志文件中的一些网址以http://开头,有些网址以www.Some开头.
这是我的代码中删除http://部分的部分.我需要添加什么来查找http和www.并删除两个?
line = re.findall(r'(https?://\S+)', line)
Run Code Online (Sandbox Code Playgroud)
目前,当我运行代码时,只有http://被剥离.如果我将代码更改为以下内容:
line = re.findall(r'(https?://www.\S+)', line)
Run Code Online (Sandbox Code Playgroud)
只有以两者开头的域都会受到影响.我需要代码更有条件.TIA
编辑...这是我的完整代码......
import re
import sys
from urlparse import urlparse
f = open(sys.argv[1], "r")
for line in f.readlines():
line = re.findall(r'(https?://\S+)', line)
if line:
parsed=urlparse(line[0])
print parsed.hostname
f.close()
Run Code Online (Sandbox Code Playgroud)
我把原帖误认为正则表达式.它确实使用urlparse.
编辑:(已解决)当我从我的文件中读取值时,新行字符将被添加到结尾.(\n)这将在此时拆分我的请求字符串.我认为这与我如何将值保存到文件中的方式有关.非常感谢.
我有以下代码:
results = 'http://www.myurl.com/'+str(mystring)
print str(results)
request = urllib2.Request(results)
request.add_header('User-Agent','Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)')
opener = urllib2.build_opener()
text = opener.open(request).read()
Run Code Online (Sandbox Code Playgroud)
这是一个循环.循环运行几次后str(mystring)更改为给出一组不同的结果.我可以循环脚本不变多次,我喜欢保持STR(MyString的)的价值,但我每次改变STR(MyString的)的值时,我得到一个错误说没有给主机时,代码试图打造的揭幕战.
opener = urllib2.build_opener()
Run Code Online (Sandbox Code Playgroud)
有人可以帮忙吗?
TIA,
保罗.
编辑:
这里有更多代码......
import sys
import string
import httplib
import urllib2
import re
import random
import time
def StripTags(text):
finished = 0
while not finished:
finished = 1
start = text.find("<")
if start >= 0:
stop = text[start:].find(">")
if stop >= 0:
text = text[:start] + text[start+stop+1:]
finished = 0
return …Run Code Online (Sandbox Code Playgroud)