第三章 《Python3 网络爬虫开发实战》

本文详细介绍了使用Python爬取猫眼电影排行榜的过程,包括正则表达式的使用技巧,如匹配排名、电影图片、名称、主演、上映时间和评分等信息。同时,文章还分享了在写入JSON数据至文件时遇到的TypeError错误及其解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

3.1.1

查看cookie(Chrome版):

3.4-爬取猫眼电影排行

代码,崔老师的博客有,说说我遇到的问题,和记录

1,关于这个正则表达式匹配问题:

pattern = re.compile(
        '<dd>.*?board-index.*?>(.*?)</i>.*?data-src="(.*?)".*?name.*?a.*?>(.*?)</a>.*?star.*?>(.*?)</p>.*?releasetime.*?>(.*?)</p>.*?integer.*?>(.*?)</i>.*?fraction.*?>(.*?)</i>.*?</dd>',
        #1,匹配 排名
        #<dd>.*?board-index.*?>(.*?)</i>
        #  .*?匹配:<i class="   规则:直到文本串中第一个非贪婪匹配的下一个满足,非贪婪匹配结束
        #  .*?匹配: board-index-1"   
        # (.*?)匹配:数字
        #2,匹配 电影图片
        #.*?data-src="(.*?)"
        #第四个.*?匹配:data-src前的所有内容
        #第五个.*?匹配:图片的链接
        #3,匹配 电影名称
        #.*?name.*?a.*?>(.*?)</a>
        #第一个.*?找到name,
        #第二个.*?找到a
        #第三个.*?找到>
        #第四个.*?找到()
        #4,匹配 主演
        #.*?star.*?>(.*?)</p>
        #第一个.*?找到star
        #第二个.*?找到>
        #第三个.*?找到主演
        #5,匹配 上映时间
        #.*?releasetime.*?>(.*?)</p>
        #不再赘述
        #6,匹配 评分
        #.*?integer.*?>(.*?)</i>.*?fraction.*?>(.*?)</i>.*?</dd>
        re.S | re.VERBOSE)

#如果不使用re.S参数,则只在每一行内进行匹配,如果一行没有,就换下一行重新开始,不会跨行。而使用re.S参数以后,正则表达式会将这个字符串作为一个整体,将“\n”当做一个普通的字符加入到这个字符串中,在整体中进行匹配。

2,写入文件:


def write_to_json(content):
    with open('result.txt', 'a') as f:
        print(type(json.dumps(content)))
        f.write(json.dumps(content, ensure_ascii=False,).encode('utf-8'))

遇到

TypeError: write() argument must be str, not bytes

问题:文件打开的方式有问题。要使用二进制形式打开

解决方法:https://www.cnblogs.com/fengyx/p/7507367.html

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值