2021SC@SDUSC
本篇文章将对dazhong.py的_get_css_link核心函数进行分析
这个函数的目的是:请求评论首页,获取所有css样式文件
def _get_css_link(self, url):
"""
请求评论首页,获取css样式文件
"""
res = requests.get(self._cur_request_css_url, headers=self._default_headers, cookies=self._cookies)
# res.text 之时,Requests 会使用其推测的文本编码。
html = res.text
print('首页源码',html)
# 正则表达式re.findall,返回string中所有与pattern匹配的全部字符串,返回形式为数组。
# css_link = re.search(r'<link re.*?css.*?href="(.*?svgtextcss.*?)">', html)
# 找到文档中所有css样式文件
css_link = re.findall(r'<link rel="stylesheet" type="text/css" href="//s3plus.meituan.net/v1/(.*?)">', html)
# assert(断言)用于判断一个表达式,在表达式条件为 false 的时候触发异常
# assert expression ==
# if not expression:
# raise AssertionError
assert css_link
css_link = 'http://s3plus.meituan.net/v1/' + css_link[0]
print('css链接',css_link)
return css_link
函数的实现思路是,首先调用requests.get()函数返回一个response对象,然后利用res.text()获取文本的编码。
然后调用re.findall(),该函数的目的是通过正则表达式模糊匹配文档中所有css样式文件,并且将它们打包成数组返回。css样式文件诸如:
<link rel="stylesheet" type="text/css" href="//s3plus.meituan.net/v1/(.*?)">
之后调用assert,判断返回的样式文件数组是否为空,即是一个css样式文件也没有找到。如果数组为空,则会弹出错误提示AssertionError。
assert expression
等价于
if not expression:
raise AssertionError
然后再取数组中的第一个元素,即是第一个css样式文件,对它进行相应的字符串拼接成为一个css链接,再作为返回值css_link。