首页 > 其他 > 详细

requests结合xpath爬取豆瓣最新上映电影

时间:2019-12-19 14:39:27      阅读:100      评论:0      收藏:0      [点我收藏+]
# -*- coding: utf-8 -*-
"""
豆瓣最新上映电影爬取
# ul = etree.tostring(ul, encoding="utf-8").decode("utf-8")
"""

import requests
from lxml import etree


#1.抓取目标网站页面
def getHtml(url):
    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',
        'Referer': 'https://movie.douban.com/',
        'Accept': 'application/json, text/javascript, */*; q=0.01'
    }
    
    resp = requests.get(url, headers=headers)
    # print(resp.text)#返回的是经过解码后的字符串,是str(unicode)类型,有时候会出现解码为乱码的情况,这时就需要自己指定解码方式
    # print(resp.content)#返回的是一个原生的字符串,就是从网页上抓取的没有经过处理的字符串,是bytes类型
    text = resp.text
    return text    
    
#2.将抓取的网页根据一定规则进行提取
def extractData(text):
    html = etree.HTML(text)
    #1拿到第一个class='lists'的ul元素
    ul = html.xpath("//ul[@class='lists']")[0]
    
    #2获取每一部电影的信息,ul标签下的所有li标签
    lis = ul.xpath("./li")
    movies = []#用于存放所有电影的列表
    for li in lis:
        #获取li的data-title属性
        title = li.xpath("@data-title")[0]#电影名称
        score = li.xpath("@data-score")[0]#评分
        duration = li.xpath("@data-duration")[0]#持续时间
        director = li.xpath("@data-director")[0]#导演
        actors = li.xpath("@data-actors")[0]#演员
        thumnail = li.xpath(".//img/@src")[0]#.代表当前标签,拿到所有电影的缩略图

        # 构造成字典
        movie = {
            'title': title, 'score': score,
            'duration': duration, 'director': director,
            'actors': actors, 'thumnail': thumnail 
        }
        movies.append(movie)
    return movies
    

if __name__ == "__main__":
    url = "https://movie.douban.com/cinema/nowplaying/beijing/"
    text = getHtml(url)
    print(extractData(text))

requests结合xpath爬取豆瓣最新上映电影

原文:https://www.cnblogs.com/zxfei/p/12067175.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!