Python解析、提取url关键字的实例详解


Posted in Python onDecember 17, 2018

解析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

结果如下:

Python解析、提取url关键字的实例详解

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

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

以上这篇Python解析、提取url关键字的实例详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python BeautifulSoup使用方法详解
Nov 21 Python
Python实现Linux下守护进程的编写方法
Aug 22 Python
Python对文件操作知识汇总
May 15 Python
python爬取w3shcool的JQuery课程并且保存到本地
Apr 06 Python
Python编程实现的简单Web服务器示例
Jun 22 Python
Python环境搭建之OpenCV的步骤方法
Oct 20 Python
python实现机器人行走效果
Jan 29 Python
python实现抖音视频批量下载
Jun 20 Python
python读取大文件越来越慢的原因与解决
Aug 08 Python
python函数的作用域及关键字详解
Aug 20 Python
pandas map(),apply(),applymap()区别解析
Feb 24 Python
pytorch实现手写数字图片识别
May 20 Python
Django Rest framework之认证的实现代码
Dec 17 #Python
python web自制框架之接受url传递过来的参数实例
Dec 17 #Python
Django Rest framework之权限的实现示例
Dec 17 #Python
Python3爬虫教程之利用Python实现发送天气预报邮件
Dec 16 #Python
Python Unittest根据不同测试环境跳过用例的方法
Dec 16 #Python
python使用插值法画出平滑曲线
Dec 15 #Python
python用fsolve、leastsq对非线性方程组求解
Dec 15 #Python
You might like
PHP中static关键字以及与self关键字的区别
2015/07/01 PHP
基于jQuery判断两个元素是否有重叠部分的代码
2012/07/25 Javascript
让angularjs支持浏览器自动填表
2014/11/10 Javascript
easyui tree带checkbox实现单选的简单实例
2016/11/07 Javascript
使用BootStrap进行轮播图的制作
2017/01/06 Javascript
js 去掉字符串前后空格实现代码集合
2017/03/25 Javascript
使用Vue做一个简单的todo应用的三种方式的示例代码
2018/10/20 Javascript
Three.JS实现三维场景
2018/12/30 Javascript
关于angular浏览器兼容性问题的解决方案
2020/07/26 Javascript
[24:42]VP vs TNC Supermajor小组赛B组 BO3 第三场 6.2
2018/06/03 DOTA
python使用7z解压apk包的方法
2015/04/18 Python
初步讲解Python中的元组概念
2015/05/21 Python
python logging日志模块的详解
2017/10/29 Python
Python学习之Anaconda的使用与配置方法
2018/01/04 Python
Request的中断和ErrorHandler实例解析
2018/02/12 Python
linux安装Python3.4.2的操作方法
2018/09/28 Python
Python中GeoJson和bokeh-1的使用讲解
2019/01/03 Python
Pyqt5如何让QMessageBox按钮显示中文示例代码
2019/04/11 Python
使用Python实现文字转语音并生成wav文件的例子
2019/08/08 Python
python爬虫开发之Beautiful Soup模块从安装到详细使用方法与实例
2020/03/09 Python
keras使用Sequence类调用大规模数据集进行训练的实现
2020/06/22 Python
Python改变对象的字符串显示的方法
2020/08/01 Python
python如何利用Mitmproxy抓包
2020/10/10 Python
移动端Html5中百度地图的点击事件
2019/01/31 HTML / CSS
倩碧澳大利亚官网:Clinique澳大利亚
2019/07/22 全球购物
财务管理专业推荐信
2013/11/19 职场文书
教师求职推荐信范文
2013/11/20 职场文书
小学教师自我鉴定范文
2014/03/20 职场文书
工程学毕业生自荐信
2014/06/14 职场文书
班级标语大全
2014/06/21 职场文书
企业员工爱岗敬业演讲稿
2014/08/26 职场文书
2014年乡镇安全生产工作总结
2014/12/02 职场文书
小学中等生评语
2014/12/29 职场文书
2015年大学团支部工作总结
2015/05/13 职场文书
走进毛泽东观后感
2015/06/04 职场文书
Python中Matplotlib的点、线形状、颜色以及绘制散点图
2022/04/07 Python