小编Pau*_*ank的帖子

找到http://和/或www.并从域中剥离.离开domain.com

我对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.

python url urlparse

12
推荐指数
3
解决办法
2万
查看次数

urllib2错误没有主机给出

编辑:(已解决)当我从我的文件中读取值时,新行字符将被添加到结尾.(\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)

python string urllib2

2
推荐指数
1
解决办法
1万
查看次数

标签 统计

python ×2

string ×1

url ×1

urllib2 ×1

urlparse ×1