猫眼电影排行获取

猫眼电影排行获取

本文基于Python下Requests库以及XPath解析模式获取猫眼电影排行。

构造请求,获取响应

在基本的爬虫申请中,第一步都是要构造请求,获取响应。而在Requests库中,获取响应需要用到get(),post(),delete()等方法,与Web中提交请求的方式重名。此处我们使用GET方式获取请求,并且构造Session使得每次GET都使用同一个Cookies,这样的好处是不易被服务器端识别出是爬虫从而拒绝访问

def GetResponse(offset, session):
    ##获取响应的方法
    url = "https://maoyan.com/board/4?offset="
    newoff = (offset-1)*10
    req = requests.Request('GET' , url+str(newoff), headers=headers)##构造请求
    prepped = session.prepare_request(req)##准备请求
    r = session.send(prepped)##发送请求
    r.encoding = 'utf-8'
    return r

返回值便是我们需要的响应内容。

解析响应

在Python中,解析响应的方法有很多,此处我们使用XPath来解析响应。首先构造HTML对象,然后使用XPath语法在HTML对象中找寻我们需要的内容(电影名,主演,上映时间,评分)。

def ParseResponse(response):
    #根据响应处理请求并返回相应元组的方法
    html = etree.HTML(response.text)
    result = html.xpath('//div[@class="board-item-content"]')
    print(len(result))
    for each in result:
        name = each.xpath('div[@class="movie-item-info"]/p[@class="name"]/a/text()')[0]
        star = each.xpath('div[@class="movie-item-info"]/p[@class="star"]/text()')[0]
        releasetime = each.xpath('div[@class="movie-item-info"]/p[@class="releasetime"]/text()')[0]
        integer = each.xpath('div[@class="movie-item-number score-num"]/p/i[@class="integer"]/text()')[0]
        fraction = each.xpath('div[@class="movie-item-number score-num"]/p/i[@class="fraction"]/text()')[0]
        sult = ParseSingel(name, star, releasetime, integer, fraction)
        yield sult

由于从HTML文档内获取到的内容并非直接可读的内容。比如评分,猫眼电影排行中,评分的整数段与小数段是分离的,我们需要通过一个方法将获取到的内容变成可读内容返回。此处也可以理解为在做数据预处理。

通过以上步骤,我们就将猫眼电影排行抓取下来了,至于数据存储部分,之后会有一篇文章专门讲述。笔者第一次写博文,有不足之处万望指出,共同进步,谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值