美文网首页Python学习手册
正则表达式Python案例(2)-爬取豆瓣电影Top250

正则表达式Python案例(2)-爬取豆瓣电影Top250

作者: 复苏的兵马俑 | 来源:发表于2020-03-07 23:27 被阅读0次

      通过Python代码实现爬取豆瓣电影Top250的电影列表,包括序号、电影名称、评分以及评论人数,并保存到文件中。

    Python代码如下:

    import re
    import requests
    headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.9 Safari/537.36'}
    
    def getPage(url):
        response = requests.get(url,headers=headers)
        return response.text
    
    def parsePage(s):
        com = re.compile(
            '<div class="item">.*?<div class="pic">.*?<em .*?>(?P<id>\d+).*?<span class="title">(?P<title>.*?)</span>'
            '.*?<span class="rating_num" .*?>(?P<rating_num>.*?)</span>.*?<span>(?P<comment_num>.*?)评价</span>', re.S)
    
        ret = com.finditer(s)
        for i in ret:
            yield {
                "id": i.group("id"),
                "title": i.group("title"),
                "rating_num": i.group("rating_num"),
                "comment_num": i.group("comment_num"),
            }
    
    
    def main(num):
        url = 'https://movie.douban.com/top250?start=%s&filter=' % num
        response_html = getPage(url)
        ret = parsePage(response_html)
        f = open("move_info7", "a", encoding="utf8")
    
        for obj in ret:
            print(obj)
            data = str(obj)
            f.write(data + "\n")
        f.close()
    
    count = 0
    for i in range(10):
        main(count)
        count += 25
    

    执行结果:

    {'id': '1', 'title': '肖申克的救赎', 'rating_num': '9.7', 'comment_num': '1903319人'}
    {'id': '2', 'title': '霸王别姬', 'rating_num': '9.6', 'comment_num': '1399407人'}
    {'id': '3', 'title': '阿甘正传', 'rating_num': '9.5', 'comment_num': '1447871人'}
    {'id': '4', 'title': '这个杀手不太冷', 'rating_num': '9.4', 'comment_num': '1643765人'}
    {'id': '5', 'title': '美丽人生', 'rating_num': '9.5', 'comment_num': '919515人'}
    {'id': '6', 'title': '泰坦尼克号', 'rating_num': '9.4', 'comment_num': '1393040人'}
    {'id': '7', 'title': '千与千寻', 'rating_num': '9.3', 'comment_num': '1487855人'}
    {'id': '8', 'title': '辛德勒的名单', 'rating_num': '9.5', 'comment_num': '740992人'}
    {'id': '9', 'title': '盗梦空间', 'rating_num': '9.3', 'comment_num': '1397503人'}
    {'id': '10', 'title': '忠犬八公的故事', 'rating_num': '9.4', 'comment_num': '959748人'}
    ……此处省略……
    {'id': '241', 'title': '黑鹰坠落', 'rating_num': '8.7', 'comment_num': '198432人'}
    {'id': '242', 'title': '我爱你', 'rating_num': '9.0', 'comment_num': '101768人'}
    {'id': '243', 'title': '发条橙', 'rating_num': '8.5', 'comment_num': '269492人'}
    {'id': '244', 'title': '千钧一发', 'rating_num': '8.8', 'comment_num': '159943人'}
    {'id': '245', 'title': 'E.T. 外星人', 'rating_num': '8.6', 'comment_num': '244865人'}
    {'id': '246', 'title': '撞车', 'rating_num': '8.6', 'comment_num': '241912人'}
    {'id': '247', 'title': '网络谜踪', 'rating_num': '8.6', 'comment_num': '358369人'}
    {'id': '248', 'title': '四个春天', 'rating_num': '8.9', 'comment_num': '109435人'}
    {'id': '249', 'title': '梦之安魂曲', 'rating_num': '8.7', 'comment_num': '158601人'}
    {'id': '250', 'title': '变脸', 'rating_num': '8.5', 'comment_num': '306623人'}
    

    相关文章

      网友评论

        本文标题:正则表达式Python案例(2)-爬取豆瓣电影Top250

        本文链接:https://www.haomeiwen.com/subject/ozwkdhtx.html