ECommerceCrawlers项目分析(十一)

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。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值