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

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

结果如下:

20181217084829.jpg

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

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

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

本文标题: Python解析、提取url关键字的实例详解

本文地址: http://www.cppcns.com/jiaoben/python/247463.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/262164.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Apache专用笔记贴

有关apache的一些知识点(例如配置,参数设置等)每每有什么问题都要到google,baidu半天. 其实这些问题自己以前也碰到过很多回,结果就浪费了大量的时候在每次的网上搜索答案上, 而且每次通过搜索得到的答案都不尽相同,有几乎是最优答案的,也有勉强可用的,想再找到以前 认为写的很…

Lodash 中文文档 (v3.10.1) - “Number” 方法

Lodash 中文文档 (v3.10.1) - “Number” 方法 Translated by PeckZegOriginal Docs: Lodash v3.10.1 Docs“Number” 方法 _.inRange(n, [start0], end) 检查 n 是否位于 start 和 end 之间(包含 start,但不包含 end)。如果未指定 end&#…

给定某年日期及该年第一天是星期几然后显示该年的日历

package lyt; import javax.swing.*; public class Lyt5 { public static void main(String[] args) { // TODO Auto-generated method stub String yearJOptionPane.showInputDialog(null,"请输入年份:","梁燕婷",JOptionPane.QUESTION_MESSAGE); Stri…

当退出python时是否释放全部内存_python如何释放内存

关于Python中的内存释放问题 首先就不得不提到Python解释器在何种情况下会释放变量的内存。Python引用了内存计数这一简单的计数来控制。 python学习网,大量的免费python视频教程,欢迎在线学习! 下面是引用计数的知识: 1) 增加引用…

php中的point用法,php strnatcmp()函数的用法总结

这篇文章主要是对php中strnatcmp()函数的用法进行了详细的总结介绍,需要的朋友可以过来参考下,希望对大家有所帮助Definition and Usage定义和用法The strnatcmp() function compares two strings using a "natural" algorithm.strnatcmp()函数…

利用7z来分卷压缩文件

最近做一个发送Email的小工具,里面有个附件的功能, 如果附件太大了,一般都是用winara 分卷压缩的,然后在上传。 如何用程序来实现自动的分卷压缩的呢?因为RAR不是免费的,就上网找了7z 安装好7z,把7z.dll拷贝到程式的目…

LoadRunner 12.02 安装教程及中文语言包安装

注意事项: 安装前,把所有的杀毒软件和防火墙关闭。 若以前安装过LoadRunner,则将其卸载。 安装路径不要带中文字符。 LoadRunner 12已经不再支持xp系统,仅支持win7和win8系统。 一、下载 首先可以在惠普官网下载Loadrunner12安装包。我的Load…

python生成日历_使用Python实现简易月历生成(2)

生成日历主程序的函数结构和注释:#此功能用于在place处追加字体为f_name,字号为f_size,内容为content的细/粗体字 def convert_text(place, f_name, f_size, content, f_bold): #此功能用于输出以date为首的四周月历,以及判断是否跨年并改年份 def get_month_info(d…

在WPF的TreeView中实现右键选定

在WPF中,TreeView默认情况是不支持右键选定的,也就是说,当右键点击某节点时,是无法选中该节点的。当我们想在TreeViewItem中实现右键菜单时,往往希望在弹出菜单的同时选中该节点,以使得菜单针对选中的节点生…

JavaScript 音频处理库 pico.js

pico.js 实现了实时音频处理的简单 JavaScript 接口。 示例代码: 转载于:https://www.cnblogs.com/shihao/archive/2012/12/08/2809084.html

[转载]项目风险管理七种武器-霸王枪

“小帅,老大对你的项目很关注,听说又拍了新需求?”度教授说道。 “对,不过我已经用离别钩处理了。” “那可能不够,你的项目已经到后期,现在进行需求变更,可能引入巨大的质量风险,这…

python编程入门第一课_python入门前的第一课 python怎样入门

人工智能时代的到来,很多文章说这么一句:“不会python,就不要说自己是程序员”,这说的有点夸张了,但确实觉得目前python这个语言值得学习,而且会python是高薪程序员的必备技能。很多初学Python的同学都面临…

八皇后问题

此处为非递归版本 #include <cmath> #include <iostream> #include <vector> #include <algorithm> using namespace std; const int MAX 8; vector<int> board(MAX); void show_result() { for(size_t i 0; i < board.size(); i) cout<…

Mysql数据库加锁与解锁(转)

转自&#xff1a;http://www.pai7.cn/article.asp?id359SQL语句&#xff1a;LOCK TABLES tablename WRITE;LOCK TABLES tablename READ;Insert INTO assignment VALUES (1,7513,0000-00-00,5),(1,7513,2003-01-20,8.5);UNLOCK TABLES;对于多个用户同时提交表单&#xff0c;并且…

破站www.2637.cn居然敢截持偶的IE!

网上也有很多人中招了&#xff0c;连主页都被改了做http://www.2637.cn/?gba&#xff0c;杀毒后哪个网址还在哪强占做主页&#xff01;重装IE也试过但还是换不到主页&#xff01;可谓是比较顽固的。 偶痛恨的同时&#xff0c;也对其原理有了一些兴趣。这个死东西还不可以被360…

php熊掌号怎么设置json-ld,dedecms织梦系统怎么对接百度熊掌号并添加JSON_LD数据

dedecms织梦系统怎么对接百度熊掌号并添加JSON_LD数据&#xff1f;百度推出的百度熊掌号非常的不错,我的dedecms织梦系统早早就对接好了,它能对你的原创文章进行原创保护,并评出熊掌号搜索指数,熊掌号搜索指数是对你文章的内容质量,用户喜爱、原创能力、活跃表现、领域专注五个…

Java并发编程:volatile关键字解析

2019独角兽企业重金招聘Python工程师标准>>> volatile这个关键字可能很多朋友都听说过&#xff0c;或许也都用过。在Java 5之前&#xff0c;它是一个备受争议的关键字&#xff0c;因为在程序中使用它往往会导致出人意料的结果。在Java 5之后&#xff0c;volatile关键…

robotframework调用python类方法_RobotFramework-调用.py文件

ubuntu 13&period;10 monodevelop3 安装 版本 ubuntu 13.10 桌面模式默认:unity :文件管理器:nautilus iOS - UIAlertView 前言 NS_CLASS_DEPRECATED_IOS(2_0, 9_0, "UIAlertView is deprecated. Use UIAlertController with a p ... PHP常用代码&#xff1a; 1.$arra…

PHP分页完美参考

转自http://www.knowsky.com/3187.html 1、前言 分页显示是一种非常常见的浏览和显示大量数据 的方法&#xff0c;属于web编程中最常处理的事件之一。对于web编程的老手来说&#xff0c;编写这种代码实在是和呼吸一样自然&#xff0c;但是对于初学者来说&#xff0c;常常对这个…

perl与php,perl与php之异同

依据个人经验&#xff0c;不说两者的好劣&#xff0c;只说两者的异同。1、变量名Perl变量名的定义有三种&#xff0c;以$、%及开头&#xff0c;分别代表一般变量、哈希变量及数组变量。而PHP则所有变量统一用$开头&#xff0c;这一点&#xff0c;PHP似乎更简洁一些。并且PHP的哈…