1.导入模块获取网页头

 

 

 

 

 


 

 2.通过分析网页源码,我们可以看到,所有电影都归到[ol]标签下。每一个[li]下包含一部电影。以下图为例,分析出对应关系后,便可以针对性的提取出想要的信息。

 

 


3.豆瓣电影top250共有10页数据,对比url发现,每翻一页就获取25个电影信息,所以只需做10个循环,就可以获取到250部电影的所有信息

 

 

 

 

 

 

 

 

3.使用xpath定位到电影名,,排名,评分和电影标语的位置:

 

 

 

 

 


 

 4.获取数据

 

 

 

 

 


 

5.数据如下:

 

 


 

代码如下:

import requests
from lxml import etree

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36',
    'Host': 'movie.douban.com'
}

def get_one_page(base_url):
    for i in range(10):
        url=base_url+str(i*25)#
        response=requests.get(url, headers=headers)
        html=etree.HTML(response.content)
        items = html.xpath('//ol/li/div[@class="item"]')
        for item in items:
            try:
                rank=item.xpath('./div[@class="pic"]/em/text()')#提取电影的排名
                title=item.xpath('./div[@class="info"]/div[@class="hd"]/a/span/text()')#提取电影名
                quote=item.xpath('./div[@class="info"]//p[@class="quote"]/span/text()')#提取quote
                score=item.xpath('//div[@class="star"]/span[contains(@class,"rating_num")]/text()')

                if len(quote)==0:
                    quote=[" "]
                print(rank[0]+"\t", title[0]+"\t", score[0]+"\t", quote[0]+"\t", )#注意到xpath返回的都是list。
            except :
                print("出错!")
                pass

if __name__ == '__main__':
    url = 'https://movie.douban.com/top250?start='
    get_one_page(url)

 

版权声明:本文为Martinaoh原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/Martinaoh/p/14260657.html