您的位置:首页 > 编程语言 > Python开发

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

2018-07-21 13:10 537 查看

好了,直接进入正题。

准备工作:

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://www.geek-share.com/detail/2673414506.html
    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))
    

#将主演信息保存到本地,个人兴趣,仅作参考
        for i in getMovieInfo(url):
            with open("star.txt", "a") as f:
                k = ''.join([str(j) for j in i])
                f.write(k)
        f.close()

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

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

降级操作:

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

2.安装适合于PhantomJS版本的selenium库:pip install selenium==2.48.0  注意是两个=符号。

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: