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

    (1)lxml解析html

    from lxml import etree
    #创建一个html对象
    html=stree.HTML(text)
    result=etree.tostring(html,encoding="utf-8").decode("utf-8")

    requests+lxml+xpath实现豆瓣电影爬虫

    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.86 Safari/537.36',
    }

    原始界面:

    url="https://movie.douban.com/cinema/nowplaying/wuhan/"
    response=request.get(url,headers=headers)
    text=response.text
    html=etree.HTML(text)

    我们会得到一个html对象

     转换成字符串看下结果

    result=etree.tostring(html,encoding="utf-8").decode("utf-8")

    部分结果如下:

     然后进行xpath解析:

    我们对准其中一部电影点击鼠标右键--检查,得到如下视图:

     我们发现,上映电影的信息都在带有属性lists的ul中,我们可以对此进行xpath解析,(我们解析的是html对象,而不是转成字符串的结果):

    uls=html.xpath("//ul[@class='lists']")[0]

    我们在转成字符串查看一下结果:

    res=etree.tostring(uls,encoding="utf-8").decode("utf-8")
    print(res)

     正是我们想要的,我们接着解析里面的内容:

    首先获取所有的li:

    #这句的意思是获取当前uls下的所有直接li
    lis=uls.xpath("./li)

    结果是一系列的li对象:

     

     我们再分别进行解析:

    movies=[]
    for li in lis:
        name=li.xpath("@data-title")[0]
        score=li.xpath("@data-score")[0]
        country=li.xpath("@data-region")[0]
        director=li.xpath("@data-director")[0]
        actors=li.xpath("@data-actors")[0]
        category=li.xpath("@data-category")[0]
        movie={
            "name":name,
            "score":score,
            "country":country,
            "director":director,
            "actors":actors,
            "category":category
        }
        movies.append(movie)
    print(movies)

    部分结果如下:

     在json中格式化结果如下:

     至此,一个初步的爬虫就完成了。

  • 相关阅读:
    Python_01安装与配置
    数据库的事务日志已满,起因为"LOG_BACKUP"
    百度网盘视频在线倍速播放的方法——Js 一行代码实现
    Socket里Client和Server
    Python自动化执行遍历点击列表的前20行每一行
    pyhton判断闰年
    Python程序结构-包
    试题 历届试题 错误票据
    试题 历届试题 剪格子
    试题 历届试题 打印十字图
  • 原文地址:https://www.cnblogs.com/xiximayou/p/11714360.html
Copyright © 2011-2022 走看看