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