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]