zoukankan      html  css  js  c++  java
  • xpath爬取豆瓣电影top250


    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]+"	", title[0]+"	", score[0]+"	", quote[0]+"	", )#注意到xpath返回的都是list。
                except :
                    print("出错!")
                    pass
    
    if __name__ == '__main__':
        url = 'https://movie.douban.com/top250?start='
        get_one_page(url)
  • 相关阅读:
    iOS图片压缩上传
    Spring MVC获得HttpServletRequest
    BZOJ 1002 FJOI2007 轮状病毒 递推+高精度
    破解2559
    Redis源代码分析(十七)--- multi事务操作
    Android setTag()与getTag(),与set多个setTag()
    【NOI2015】【程序自己主动分析】【并查集+离散化】
    BZOJ1433 [ZJOI2009]假期的宿舍
    将參数从PHP传递到JavaScript中
    NUTCH2.3 hadoop2.7.1 hbase1.0.1.1 solr5.2.1部署(二)
  • 原文地址:https://www.cnblogs.com/Martinaoh/p/14260657.html
Copyright © 2011-2022 走看看