大家好,我是咿哑呀。我们知道,在百度搜索中,查看今日热点事件排行榜时,可以打开网址"http://top.baidu.com/buzz?b=341&c=513&fr=topbuzz_b1"。今天,咿哑呀教大家用python代码打开这个网址,搜索今日热点事件排行榜。
新建YYY文件夹,在YYY文件夹中新建main.py文件,在main.py文件中写入以下四行代码:
import string,chardet
from urllib import request
from urllib.parse import quote
from bs4 import BeautifulSoup
这四行代码意思就是导入下载、解析网页所需要的包,如:string、chardet用于解析网址字符,urllib.reauest、urllib.parse.quote用于下载网页,bs4.beautifulsoup用于解析网页源代码。
def download(new_url):
if new_url is None:
return None
headers = ("User-Agent",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64)
AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/52.0.2743.116 Safari/537.36 Edge/15.15063")
opener = request.build_opener()
opener.addheaders = [headers]
request.install_opener(opener)
url_ = quote(new_url, safe=string.printable)
if request.urlopen(url_).getcode() != 200:
return None
else:
html = request.urlopen(url_).read()
charset = chardet.detect(html)['encoding']
return html.decode(charset, 'ignore')
这个download函数作用就是模拟网页浏览器打开网址,下载并返回网页源代码。
继续写入get_words函数代码:
def get_words(html_context):
words=[]
if html_context is None:
return
soup = BeautifulSoup(html_context, "html.parser")
titles = soup.findAll('a',class_='list-title')
if titles:
for item in titles:
words.append(item.get_text())
return words
get_words函数作用就是将网页源代码解析出我们需要的内容,并以列表的形式返回所需内容。
最后,我们写入这个文件的入口函数main代码:
# 创建main方法
if __name__ == "__main__":
url="http://top.baidu.com/buzz?b=341&c=513&fr=topbuzz_b1"
content=download(url)
words=get_words(content)
for i in range(len(words)):
print(i+1,'.',words[i])
这段代码引用了download、get_words两个函数来下载、解析网址,获得所需内容,以列表的形式显示排行榜内容。
这段代码运用十分宽泛,只需要更换url网址和第二个函数中soup.findAll函数中的内容,就可以从url网址中下载soup.findAll中指定的内容啦 !如果这篇文章对你有用,请点赞、转发、收藏、评论,如果喜欢我的文章,请搜索并关注“咿哑呀”,我将分享更多文章给大家。