解析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的内容如下:

https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=0&rsv_idx=1&ch=&tn=baidu&bar=&wd=python&rn=&oq=&rsv_pq=ece0867c0002c793&rsv_t=edeaQq7DDvZnxq%2FZVra5K%2BEUanlTIUXhGIhvuTaqdfOECLuXR25XKDp%2Bi0I&rqlang=cn&rsv_enter=1&inputT=218
https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&ch=&tn=baidu&bar=&wd=python%E9%87%8C%E7%9A%84%E5%AD%97%E5%85%B8dict&oq=python&rsv_pq=96c160e70003f332&rsv_t=0880NkOvMIr3TvOdDP1t8EbloD8qwr4yeP6CfPjQihQNNhdExfuwyOFMrx0&rqlang=cn&rsv_enter=0&inputT=10411
https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&ch=&tn=baidu&bar=&wd=python%E9%87%8C%E7%9A%84urlprese&oq=python%25E9%2587%258C%25E7%259A%2584re%25E9%2587%258C%25E7%259A%2584%257C%25E6%2580%258E%25E4%25B9%2588%25E7%2594%25A8&rsv_pq=d1d4e7b90003d391&rsv_t=5ff4Vok4EELK1PgJ4oSk8L0VvKAn51%2BL8ns%2FjSubexg7Lb7znKcTvnVtn8M&rqlang=cn&rsv_enter=1&inputT=2797
https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&ch=&tn=baidu&bar=&wd=python++wo+%E7%88%B1urlprese&oq=python%25E9%2587%258C%25E7%259A%2584urlprese&rsv_pq=eecf45e900033e87&rsv_t=1c70xAYhrvw5JOZA7lpVgt4pw%2BW1TO8hqTejTh67JgEQfqAGyDydd25HAmU&rqlang=cn&rsv_enter=0&inputT=10884
http://news.baidu.com/ns?word=%E8%B6%B3%E7%90%83&tn=news&from=news&cl=2&rn=20&ct=1
http://news.baidu.com/ns?ct=1&rn=20&ie=utf-8&bs=%E8%B6%B3%E7%90%83&rsv_bp=1&sr=0&cl=2&f=8&prevct=no&tn=news&word=++++++%E8%B6%B3++%E7%90%83+++++%E4%BD%A0%E5%A5%BD+%E5%98%9B%EF%BC%9F&rsv_sug3=14&rsv_sug4=912&rsv_sug1=4&inputT=8526
http://tieba.baidu.com/f?ie=utf-8&kw=%E7%BA%A2%E6%B5%B7%E8%A1%8C%E5%8A%A8&fr=search&red_tag=q0224393377
https://www.sogou.com/web?query=ni+zai+%E6%88%91+%E5%BF%83li&_asf=www.sogou.com&_ast=1520388441&w=01019900&p=40040100&ie=utf8&from=index-nologin&s_from=index&sut=9493&sst0=1520388440692&lkt=8%2C1520388431200%2C1520388436842&sugsuv=1498714959961744&sugtime=1520388440692
https://www.lagou.com/jobs/list_python%E5%A4%A7%E6%95%B0%E6%8D%AEmr?labelWords=&fromSearch=true&suginput=
https://www.chunyuyisheng.com/pc/search/?query=%E6%85%A2%E6%80%A7%E4%B9%99%E8%82%9D%
http://s.weibo.com/weibo/%25E5%2594%2590%25E4%25BA%25BA%25E8%25A1%2597%25E6%258E%25A2%25E6%25A1%25882&Refer=index
http://s.weibo.com/weibo/%25E4%25BD%25A0%25E5%25A5%25BD123mm%2520%25E5%2597%25AF%2520mm11&Refer=STopic_box

结果如下:

如果要研究其他host,可以加到字典dict里。

备注:以上代码和思路仅供参考,如有更好的方法敬请留言!

版权声明:本文为博主原创文章,未经博主允许不得转载。

Python解析、提取url关键字相关推荐

  1. python之33个关键字详解_Python解析、提取url关键字的实例详解

    解析url用的类库: python2版本: from urlparse import urlparse import urllib python3版本: from urllib.parse impor ...

  2. python 正则表达式提取url

    1. python 提取URL到数组中 import reif __name__ == "__main__":f = open(r"C:\Users\HuJun\Pych ...

  3. python打开网址搜索关键字_Python实验:百度搜索关键字自动打开相关URL

    #! python # coding: utf-8 # python实现百度搜索关键字,并依次用浏览器打开前五个搜索结果 ## ##Beautiful Soup 是一个模块,用于从HTML 页面中提取 ...

  4. Python实现从url中提取域名的几种方法

    这篇文章主要介绍了Python实现从url中提取域名的几种方法,本文给出了3种方法实现在URL中提取域名的需求,需要的朋友可以参考下. 从url中找到域名,首先想到的是用正则,然后寻找相应的类库.用正 ...

  5. Python爬虫入门之爬虫解析提取数据的四种方法

    本文主要介绍了Python爬虫入门之爬虫解析提取数据的四种方法,通过具体的内容向大家展现,希望对大家Python爬虫的学习有所帮助. 基础爬虫的固定模式 笔者这里所谈的基础爬虫,指的是不需要处理像异步 ...

  6. 使用python提取url中的顶级域名及其后缀

    提取url中的信息,可以使用python中的urlparse模块进行解析,但是有个缺陷是无法提取顶级域名.参考博文:https://blog.csdn.net/weixin_44799217/arti ...

  7. python中url是什么_怎么在Python中实现URL的解析

    怎么在Python中实现URL的解析 发布时间:2020-08-24 17:56:47

  8. Python爬虫:URL管理器及其实现方式、网页下载器、网页解析器原理及其实现原理!

    Python爬虫之URL管理器: Python爬虫:URL管理器实现方式: Python爬虫之网页下载器: urllib2实现网页下载器的三种方法: 具体代码:                    ...

  9. python解析url参数_Python3 url解码与参数解析

    在获取zk节点时,有些子节点名字直接就是编码后的url,就像下面这行一样: url='dubbo%3A%2F%2F10.4.5.3%3A20880%2Fcom.welab.authority.serv ...

最新文章

  1. vCenter- vcsa6.7/7.0重置root密码
  2. 登录页面和FORM的职责不对称,处理方法,刷新工作流程
  3. 8086汇编-实验4-[bx]和loop的使用
  4. 正确处理kafka多线程消费的姿势
  5. Java 平台调试架构JPDA
  6. html里span和div,HTML div和span
  7. 【shell系列】之awk简单介绍
  8. 深度剖析Java数据结构之表(二)——List接口
  9. [翻译] KGModal
  10. 力扣-111. 二叉树的最小深度
  11. robocode 创建机器人
  12. 计算机文献检索综合性实验报告,文献检索实验报告.doc
  13. 32位电脑和64位电脑
  14. AKULAKU笔试题(还有1题未答)
  15. 谷歌的现实、摩托的无奈与联想的接盘
  16. python按某列拆分excel表格_利用Python+Pandas实现从一个excel表中提取列形成新表
  17. 手机屏幕到底要多大才算是个头?
  18. Android之高仿记事本、备忘录、便签
  19. 【读后感】读《了不起的盖茨比》后感
  20. nag在逆向中是什么意思_NAG在医学是什么意思

热门文章

  1. RTL8188CUS usb wifi驱动移植到(arm-linux)
  2. haar级联分类器车辆检测_Haar级联分类器Open CV用于人脸检测的术语
  3. cvpr 2019 image caption
  4. PC-Lint的使用方法(一)
  5. html5仿抖音php,H5+Jquery 仿抖音视屏切换
  6. java gzip压缩json_将PHP程序中返回的JSON格式数据用gzip压缩输出的方法
  7. 土木工程常用计算机语言,土木工程在计算机中的应用 basic语言.doc
  8. 今天才知道,什么是“柏拉图式”的爱情~~~来源: 张军威♀寶貝的日志
  9. python植物大战僵尸代码例_用Python实现植物大战僵尸游戏,很酷
  10. 永不气馁,用清晰目标换取成功结果 开利网络主题培训会议持续进行中