![]() 热心会员
|
要获取的字符是以“https://v.qq.com/x/page/”,开始的网址
例如:“https://v.qq.com/x/page/n08227d6av4.html” 有个问题,每个这样的网址在文本里会出现两次,但结果只要一个,每个网址一行,不要引号。 |
||
![]() 出售 JBL RF610, 支持蓝牙立体声 | iGo蓝牙鼠标 |
![]() |
![]() 热心会员
|
引用:
代码:
package main import ( "bufio" "fmt" "log" "os" "strings" ) func main() { var filePath string; pattern := "https://v.qq.com/x/page/" if len(os.Args) > 1 { filePath = os.Args[1] } if len(os.Args) > 2 { pattern = os.Args[2] } if len(filePath) == 0 { fmt.Println("No file path specified") return } fFile, err := os.Open(filePath) if err != nil { panic(err) } defer fFile.Close() scanner := bufio.NewScanner(fFile) urls := map[string]struct{}{} for scanner.Scan() { text := scanner.Text() if pos:=strings.Index(text, pattern); pos > 0 { endpos := strings.Index(text[pos:], "\"") url := text[pos:pos+endpos] if _, ok := urls[url]; !ok { fmt.Println(url) urls[url] = struct{}{} } } } if err := scanner.Err(); err != nil { log.Fatal(err) } } |
|||
![]() |
![]() 支柱会员
|
我这一切正常啊。
可能1是头部我没有加。 2有可能是文件编码问题。 先加上头部 # -*- coding: utf-8 -*-试试。 不行,就 加上 encoding='gbk' 即那一行换成 with open(txt,encoding='gbk') as f: 代码:
# -*- coding: utf-8 -*- """ Created on Sat Jan 19 23:31:51 2019 @author: aspirer """ import re txt=r"G:\\TEMP\网页源码.TXT" with open(txt) as f: url_list=[] for line in f: urls = re.findall('http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+', line) if urls: urls=[x for x in urls if 'https://v.qq.com/x/page/' in x] url_list.extend(urls) #print(list(set(url_list))) #要一行一个用下面的打印 for x in url_list: print(x) |
||
![]() |