Python利用selenium+PhantomJS爬取猫眼电影Top100

好了,直接进入正题。

准备工作:

1. 先安装selenium库没什么问题,pip install 这样子;

2.再就是下载PhantomJS无头浏览器,可以去官网下载http://phantomjs.org/download.html,下载出来把phantomjs.exe文件放到python目录下(和Scripts同级)。

开始写代码:

1.引用需要用到的库:

from selenium import webdriver
import time

2.利用user-agent代理并启动PhantomJS浏览器:

header = {'User-Agent':'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Mobile Safari/537.36'}
headers = header
driver = webdriver.PhantomJS()

3.抓取电影信息:

def getMovieInfo(url):
    driver.get(url)

#创建容器储存一会儿抓取回来的信息
    movie_info = []

#利用selenium库元素定位方法driver.find_element(s)........根据css选择器进行分析抓取出rank,name,starring的信息,具体方法请参考https://blog.csdn.net/bananasssss/article/details/51316369
    Rank = driver.find_elements_by_css_selector(".board-wrapper  i.board-index")
    Name = driver.find_elements_by_class_name("name")
    Starring = driver.find_elements_by_css_selector(".star")

#分析页面内容,每页有十个电影,遍历以将其全部储存到最开始创建的容器中
    for i in range(10):
         movie_info.append([Rank[i].text,Name[i].text,Starring[i].text])
    return movie_info

4.返回结果并格式化输出:

def printResult(movie_info):
    for i in range(10):
        m = movie_info[i]
        print("{:^10}\t{:^15}\t{:^25}\n".format(m[0],m[1],m[2]))

5.定义主函数:

def main():
    print("{:^10}\t{:^15}\t{:^25}\n".format("排名","电影名称","主演"))

#观察不同页数的url可以发现,只有offset后边的数字发生了有规律的变化,所以可以根据这个来遍历所有页数
    for offset in range(10):
        offset = offset*10

#更新链接以用于下次访问新的页
        url = "http://maoyan.com/board/4?offset=" + str(offset)

#设置等待时间
        time.sleep(0.5)

#调用输出函数打印出结果
        printResult(getMovieInfo(url))
    

#关闭PhantomJS浏览器
    driver.quit()
main()

最后再说一下程序运行过程中可能会出现的一个warning,就是selenium和PhantomJS的版本不符,有强迫症的朋友需要将selenium库进行降级。

降级操作:

1.卸载当前版本的selenium:用pip uninstall selenium命令

2.安装适合于PhantomJS版本的selenium库:pip install selenium==2.48.0  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值