Python:爬取豆瓣电影新片榜电影名称

环境:Python3.7 ,BeautifulSoup,re,requests
参考:《Python网络爬虫从入门到实践》以及 各大网友

目标url:https://movie.douban.com/chart
Python:爬取豆瓣电影新片榜电影名称_第1张图片

构造网页请求头、使用requests.get()获取response对象r

从获取网页html代码开始提取数据:

soup = BeautifulSoup(r.text, "lxml")

找到电影名称所在部分

Python:爬取豆瓣电影新片榜电影名称_第2张图片
Python:爬取豆瓣电影新片榜电影名称_第3张图片

通过对网页内容进行分析,可看出电影相关信息在

部分

div_list = soup.find_all('div', class_='pl2')

获取电影名称

第一种方法:

movie_list=[]
for each in div_list:
    movie = each.a.text
       
    # 使用正则表达式过滤换行符和空格
    pattern = re.compile(r'\n| ')
    movie = pattern.sub('', movie)
        
    movie_list.append(movie)
    
print(movie_list)

输出结果会将电影名称中单词间的空格也删除:

期望结果 实际结果
小小的愿望 / 伟大的愿望 / The Last Wish 小小的愿望/伟大的愿望/TheLastWish
小丑回魂2 / 它:第二章(台) / It 2 小丑回魂2/它:第二章(台)/It2
罗小黑战记 / 罗小黑战记大电影 / The Legend of Hei 罗小黑战记/罗小黑战记大电影/TheLegendofHei

第二种方法:

只获取标签span中的内容:

movie_list=[]
for each in div_list:
    movie = each.span.text
    movie_list.append(movie)
    
print(movie_list)

输出结果中发现有一项为空:
分析:
Python:爬取豆瓣电影新片榜电影名称_第4张图片
没有span标签

第三种方法:

提取 标签中的文本不提取子标签的文本

movie_list = []
for each in div_list:
    movie = each.a.contents[0]
    #过滤
    pattern = re.compile(r'\n| |/')
    movie = pattern.sub('', movie)
    
    movie_list.append(movie)
print(movie_list)

输出结果:

[‘小丑’, ‘小小的愿望’, ‘罗小黑战记’, ‘寄生虫’, ‘好莱坞往事’, ‘续命之徒:绝命毒师电影’, ‘我在雨中等你’, ‘克劳斯:圣诞节的秘密’, ‘天使陷落’, ‘小丑回魂2’]

你可能感兴趣的:(Python:爬取豆瓣电影新片榜电影名称)