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://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 注意是两个=符号。
阅读更多- Python学习记录-爬取猫眼电影top100榜单
- [Python爬虫] 之十八:Selenium +phantomjs 利用 pyquery抓取电视之家网数据
- Python爬取猫眼电影TOP100
- python正则表达式爬取猫眼电影top100
- [Python爬虫] 之二十三:Selenium +phantomjs 利用 pyquery抓取智能电视网数据
- [Python爬虫] 之二十七:Selenium +phantomjs 利用 pyquery抓取今日头条视频
- [Python爬虫] 之十七:Selenium +phantomjs 利用 pyquery抓取梅花网数据
- [Python爬虫] 之二十一:Selenium +phantomjs 利用 pyquery抓取36氪网站数据
- 利用requests和正则表达式re爬取猫眼电影top100,并下载图片
- [Python爬虫] 之二十二:Selenium +phantomjs 利用 pyquery抓取界面网站数据
- python爬虫实战:抓取猫眼电影TOP100存放到MongoDB中
- Python爬虫之抓取猫眼电影TOP100
- [Python爬虫] 之十六:Selenium +phantomjs 利用 pyquery抓取一点咨询数据
- Python爬虫-爬取猫眼电影Top100榜单
- [Python爬虫] 之二十六:Selenium +phantomjs 利用 pyquery抓取智能电视网站图片信息
- Python爬虫之三:抓取猫眼电影TOP100
- python 爬虫 正则表达式爬取猫眼电影top100榜
- [Python爬虫] 之二十:Selenium +phantomjs 利用 pyquery通过搜狗搜索引擎数据
- 利用requests和正则爬取猫眼电影top100榜单
- python 爬虫抓取猫眼电影 top100 源码