解析url用的类库:
python2版本:
from urlparse import urlparse import urllib
python3版本:
from urllib.parse import urlparse import urllib.request
研究了不同的url规则发现:只要在搜索关键字是用=嫁接的,查询的关键在解析后的query里
如果不是用=嫁接,查询的关键在解析后的path里。
解析的规则都是一样的,正则如下:(6中不同情况的组合)
另外host为‘s.weibo.com'的url编码与其他不同要另做处理。
代码如下:有些网站的规则还不是很清楚,需要花大量时间找规则,规则越清晰,关键字就越清楚,如下规则已适合绝大部分网站,酌情参考。
# -*- coding:utf-8 -*- from urlparse import urlparse import urllib import re # url source_txt = "E:\\python_Anaconda_code\\url.txt" # 规则 regular = r'(\w+(%\w\w)+\w+|(%\w\w)+\w+(%\w\w)+|\w+(%\w\w)+|(%\w\w)+\w+|(%\w\w)+|\w+)' # 存放关键字 kw_list = list() # key为要研究网站的host,value为关键字的嫁接标识符 dict = { "www.baidu.com": "wd=", "news.baidu.com": "word=", "www.sogou.com": "query=", "tieba.baidu.com": "kw=", "wenku.baidu.com": "word=", "music.sina.com.cn": "k=", "www.haosou.com": "q=", "www.lagou.com": "list_", "www.chunyuyisheng.com": "query=", "s.weibo.com": "weibo/" } def Main(): with open(source_txt, 'r') as f_source_txt: for url in f_source_txt: host = url.split("//")[1].split("/")[0] if host in dict: flag = dict[host] if flag.find("=") != -1: query = urlparse(url).query.replace('+', '') kw = re.search(flag + regular, query, re.I) # .group(0) if kw: kw = urllib.unquote(kw.group(0).split(flag)[1]) print(kw) else: path = urlparse(url).path.replace('+', '') kw = re.search(flag + regular, path.replace("%25", "%"), re.I) if kw: kw = urllib.unquote(kw.group(0).split(flag)[1]) print(kw) if __name__ == '__main__': Main()
url.txt的内容如下:
最新资源
- 腾格尔.2002-四十独白【风潮】【WAV+CUE】
- 陈明真.1992-到哪里找那么好的人【华星】【WAV+
- 黄凯芹.2012-廿五年3CD【环球】【WAV+CUE】
- 证声音乐图书馆《七夕 爵士情缘》[320K/MP3][64
- 证声音乐图书馆《七夕 爵士情缘》[FLAC/分轨][3
- 杨泰瑞《City Boy》[320K/MP3][28.71MB]
- 胡彦斌《失业情歌》首版[WAV+CUE]
- 杨泰瑞《City Boy》[FLAC/分轨][159.66MB]
- APM亚流新世代《一起冒险》[320K/MP3][68.66MB]
- FIM《天伦乐》(DaydreamsAndLullabies)24K金碟[