利用beautifulsoup的select函数抓取猫眼电影100榜单

 
    最近刚看完爬虫课程,由于对正则表达式掌握的不太好,恰好课程内容又是Python100例,看了一下猫眼电影的网页架构,也是非常简单的,唯一的一个不好处理的点在于评分,
还好,在折腾了一个晚上的情况下,总算搞定,废话不多说,代码如下:
    小白刚刚接触Python大法,也是对自己学习做一个简单的笔记,不完善之处,还望勿喷,谢谢
 
from lxml import etree
from bs4 import BeautifulSoup
import requests

head = {'User-Agent':''}
#经测试,无头访问不成功,加入headers

def get_cont(url):
    x = requests.get(url,headers = head)
    x.encoding = 'utf8'
    soup = BeautifulSoup(x.text,'lxml')

    ranks = soup.select('dl.board-wrapper > dd > i')
    names = soup.select('div.movie-item-info p.name a')
    actors = soup.select('div.movie-item-info p.star')
    times = soup.select('div.movie-item-info p.releasetime')
    #   #app > div > div > div.main > dl > dd > div > div > div.movie-item-number.score-num > p
    score1 = soup.select('#app > div > div > div > dl > dd > div > div > div.movie-item-number.score-num > p i.integer')
    score2 = soup.select('#app > div > div > div > dl > dd > div > div > div.movie-item-number.score-num > p i.fraction')
    #此处由于打分是用两个i标签封装包裹起来的,故用了两个变量来存储整数和小数,在下面将两个拼接即可
    # print(ranks)
    for rank,name,actor,time,score1,score2 in zip(ranks,names,actors,times,score1,score2):
        yield {
            'rank' : rank.text.strip(),
            'name': name.text.strip(),
            'actor':actor.text.strip()[3:],
            'time': time.text.strip()[5:],
            'score': score1.text.strip() + score2.text.strip()

        }
        # print(score)

def majorfunc():

    for j in range(0,91,10):
        u = 'http://maoyan.com/board/4?offset=0'
        url = u + str(j)
        re = requests.get(url,headers = head).text
        for k in get_cont(url):
            print(k)

if __name__ == '__main__':
    majorfunc()



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值