python指定url

Python023

python指定url,第1张

今天简单使用了一下python的re模块和lxml模块,分别利用的它们提供的正则表达式和xpath来解析页面源码从中提取所需的title,xpath在完成这样的小任务上效率非常好,在这里之所以又使用了一下正则表达式是因为xpath在处理一些特殊的页面的时候会出现乱码的情况,当然这不是xpath的原因,而是页面本身编码,跟utf-8转码之间有冲突所致,这里看代码:

python抽取指定url页面的title方法(python获取当前页面的url) python 抽取 url title 脚本之家 第1张

# !/usr/bin/python

#-*-coding:utf-8-*-

'''

功能:抽取指定url的页面内容中的title

'''

import re

import chardet

import urllib

from lxml import etree

def utf8_transfer(strs):

'''

utf8编码转换

'''

try:

if isinstance(strs, unicode):

strs = strs.encode('utf-8')

elif chardet.detect(strs)['encoding'] == 'GB2312':

strs = strs.decode("gb2312", 'ignore').encode('utf-8')

elif chardet.detect(strs)['encoding'] == 'utf-8':

strs = strs.decode('utf-8', 'ignore').encode('utf-8')

except Exception, e:

print 'utf8_transfer error', strs, e

return strs

def get_title_xpath(Html):

'''

用xpath抽取网页Title

'''

Html = utf8_transfer(Html)

Html_encoding = chardet.detect(Html)['encoding']

page = etree.HTML(Html, parser=etree.HTMLParser(encoding=Html_encoding

文章目录

一、功能介绍

二、功能介绍

1.`urlparse.urlparse`

2.`urlparse.urlsplit`

3.`urlparse.urljoin`

一、功能介绍

官方文档 :http://docs.python.org/library/urlparse.html

作用:urlparse模块主要是用于解析url中的参数 对url按照一定格式进行 拆分或拼接

注意:urlparse 模块在 python 3.0 中 已经改名为 urllib.parse

二、功能介绍

1.urlparse.urlparse

1.1 获取ParseResult对象

将url分为6个部分,返回一个包含6个字符串的元组:协议、位置、路径、参数、查询、片段。

举例:

import urlparse

url_change = urlparse.urlparse('https://i.cnblogs.com/EditPosts.aspx?opt=1')

print url_change

'''

输出结果:

ParseResult(scheme='https', netloc='i.cnblogs.com', path='/EditPosts.aspx', params='', query='opt=1', fragment='')

'''

scheme 是协议

netloc 是域名服务器

path 相对路径

params是参数

query是查询的条件

fragment是片段

1.2获取结果的某一项

import urlparse

url_change = urlparse.urlparse('https://i.cnblogs.com/EditPosts.aspx?opt=1')

print url_change.query  # opt=1

print url_change.scheme  # https

1.3获取结果的某一项,用字典或元组展示

import urlparse

url_change = urlparse.urlparse('https://i.cnblogs.com/EditPosts.aspx?opt=1')

print urlparse.parse_qs(url_change.query)  # {'opt': ['1']}

print urlparse.parse_qsl(url_change.query)  # [('opt', '1')]

2.urlparse.urlsplit

2.1获取SplitResult对象

和urlparse差不多,将url分为5部分,返回一个包含5个字符串项目的元组:协议、位置、路径、查询、片段。

import urlparse

url_change = urlparse.urlsplit('https://i.cnblogs.com/EditPosts.aspx?opt=1')

print url_change

'''

输出结果:

SplitResult(scheme='https', netloc='i.cnblogs.com', path='/EditPosts.aspx', query='opt=1', fragment='')

'''

scheme 是协议

netloc 是域名服务器

path 相对路径

query是查询的条件

fragment是片段

2.2获取某一项

print url_change.scheme # https

3.urlparse.urljoin

将相对的地址组合成一个url,对于输入没有限制,开头必须是http://或者https://,否则将不组合前面。

import urlparse

new_url = urlparse.urljoin('https://baidu.com/ssss/','88888')

print new_url

'''

https://baidu.com/ssss/88888

''' 注意 :如果输入错误信息 如 new_url = urlparse.urljoin('122','88888') 并不会将两者合并,而输出后边的链接,即‘88888’

域名放在第一个参数,第二个参数为要和域名拼接的子链接

url编码:

import urllib

url = 'http://test.com/s?wd=哈哈'   #如果此网站编码是gbk的话,需要进行解码,从gbk解码成unicode,再从Unicode编码编码为utf-8格式。

url = url.decode('gbk', 'replace')

print urllib.quote(url.encode('utf-8', 'replace'))

参考资料

Python3 如何对url解码?.CSDN博客[引用时间2018-1-1]