在我们每天的上网冲浪中,打开一个网页的第一件事情,往往是看看这个网页的标题。有时我们需要爬取一大批网页,获取它们的标题信息。在这篇文章中,我们将学习如何使用Python输出网页标题,从而轻松获取网页信息,加速我们的工作。
一、Python网页输出JSON
要获取网页标题,第一步将是爬取网页HTML内容,使用Python中的'urllib'模块可以很容易地实现这一点。在下面的代码段中,我们用Python爬取哔哩哔哩的HTML内容,并将其输出为JSON格式。
import urllib.request import json url = 'http://www.bilibili.com' req = urllib.request.urlopen(url) html = req.read() charset = req.info().get('charset', 'utf-8') html = html.decode(charset) title = html[html.find('') + 7 : html.find(' ')] result = {'url': url, 'title': title} json_result = json.dumps(result, ensure_ascii=False) print(json_result)
在上述代码中,我们首先用Python的'urllib.request'模块打开了哔哩哔哩网站,并读取了其HTML内容。接着我们使用'json'模块,将网站的网址和标题组合成了一个json对象。最后我们使用'json.dumps'将JSON对象转换为JSON字符串,并使用'print'函数进行输出。在这里,我们使用了'ensure_ascii=False',这样可以确保有中文的网页标题也可以被正确地输出。
二、Python怎么输出中文标题
许多网站的标题可能包含中文字符。为了确保这些字符能够被 Python 正确地读取和输出,我们需要确定它们所使用的编码格式,并将 Python 的编码格式设置为相同的格式。有时候,我们也需要对编码格式进行转换,将其转换为 Python 可以读取的编码格式。在下面这个例子中,我们将使用 Python 来获取网页标题,并确保其正确地输出中文字符。
import urllib.request import chardet url = 'http://www.163.com' req = urllib.request.urlopen(url) html = req.read() encoding = chardet.detect(html)['encoding'] html = html.decode(encoding) title_utf8 = html[html.find('') + 7 : html.find(' ')] title_gbk = title_utf8.encode('utf-8').decode('gbk') print(title_gbk)
在上述代码中,我们使用了'chardet'模块来猜测网页HTML内容的编码格式。接着我们使用这个编码格式将网页内容解码成Unicode字符串。使用Unicode字符串,我们可以更加容易地处理网页标题中的中文字符。然后我们使用UTF-8编码格式将字符串编码,再将它转换为GBK编码格式。最后,我们输出了这个网站的标题。
三、Python获取网页标题
下面的代码演示了如何使用Python获取一个网站的标题。
import urllib.request url = 'http://www.baidu.com' req = urllib.request.urlopen(url) html = req.read() charset = req.info().get('charset', 'utf-8') html = html.decode(charset) title = html[html.find('') + 7 : html.find(' ')] print(title)
在这个代码段中,我们使用Python中的 urllib.request 来打开百度的网站,并读取其HTML内容。接着,我们使用'infp().get'函数来获取HTML的编码格式,并将其用于解码HTML。最后,我们使用字符串切片操作获取百度网站的标题,并输出它。
四、Python爬取网页标题
下面我们演示一个完整的Python爬虫程序,用于获取一个网站的标题。
import requests from bs4 import BeautifulSoup url = 'http://www.sohu.com/' r = requests.get(url) r.encoding = r.apparent_encoding soup = BeautifulSoup(r.text, 'html.parser') title = soup.title.string print(title)
在上述代码中,我们首先使用' requests '模块获取我们想要爬取信息的网站。接着,我们使用 BeautifulSoup 模块解析HTML,并找到网站的标题。最终,我们输出标题。
五、Python爬取网页标题和日期
与获取网页标题类似,我们经常需要获取网页上的其他信息,例如发布的日期。接下来,让我们看一个Python程序,它可以输出网页标题和发布日期。
import requests from bs4 import BeautifulSoup url = 'http://www.xinhuanet.com/politics/' r = requests.get(url) r.encoding = r.apparent_encoding soup = BeautifulSoup(r.text, 'html.parser') news_list = soup.find_all(class_='clearfix') for news in news_list: title = news.find('a').attrs['title'] date = news.find('span').string print('{} - {}'.format(title, date))
在这个代码段中,我们首先使用' requests '模块获取新华网政治新闻的网页源代码。接着,我们使用 BeautifulSoup 来解析HTML,找到所有带有'class="clearfix"'属性的标签。对于每个新闻条目,我们使用'find'函数来找到该新闻的标题和发布日期,并使用'format'函数进行输出。
结论
在这篇文章中,我们学习了如何使用Python输出网页的标题。无论你想要使用哪种方法来获取标题,Python提供了大量可用的工具,可以方便,高效地进行网页信息的获取,使我们的工作更加快捷和便利。