代码要多敲 注释要清晰 哪怕再简单

#使用selenium和phantomjs,完成豆瓣音乐排行榜的内容爬取
#地址:https://music.douban.com/chart #导入需要的模块
from selenium import webdriver
import os
from lxml import etree
import time
from bs4 import BeautifulSoup
#生成浏览器对象
driver = webdriver.PhantomJS() #创建文件夹存储music信息
root_dir = 'douban_music'
if not os.path.exists(root_dir):
os.mkdir(root_dir) #抓取页面函数
def spider():
base_url = 'https://music.douban.com/chart'
#用浏览器获取网页
driver.get(base_url)
#等待页面加载
time.sleep(4)
# 获取页面资源
content = driver.page_source
# print(content) #在解析函数中解析页面元素
content_parser(content) def content_parser(content):
# 用xpath解析得到的页面资源 将content生成树结构
tree = etree.HTML(content)
# print(tree)
#拿取所有的歌曲列表
music_list = tree.xpath('//ul[@class="col5"]/li[@class="clearfix"]')
#遍历所有的歌曲列表
for music in music_list: #拿取歌曲排名
music_ranking = music.xpath('.//span[@class="green-num-box"]')
#判断歌曲排名是否是非空
if music_ranking != []:
#获取歌曲排名文本信息
music_ranking = music_ranking[0].text #拿取图片信息链接
music_src = music.xpath('./a/img/@src')
if music_src != []:
music_src = music_src[0] #拿取歌曲名称
music_name = music.xpath('./div/h3/a')
if music_name != []:
music_name = music_name[0].text
else:
#有一部分歌曲名的xpath路径不一样
music_name = music.xpath('./div/p/a')[0].text #拿取singer歌手名称以及播放次数
singer = music.xpath('./div/p')
# print(list(singer))
if singer != []:
#歌手没有全部拿取
singer = singer[0].text #拿取上榜天数
music_days = music.xpath('./span') # 趋势
music_trend = music_days[2].text
if music_days != []:
music_days = music_days[1].text #打印所有拿取到的歌曲信息
print(music_ranking,music_src,music_name,singer,music_days,music_trend) #主进程
if __name__ == '__main__':
spider() '''
music:
<ul class="col5"> <li class="clearfix">
<span class="green-num-box">1</span>
<a class="face" href="https://site.douban.com/baishui/" target="_blank">
<img src="https://img3.doubanio.com/view/site/small/public/1aa014ef81b271d.jpg">
</a>
<div class="intro">
<h3 class="icon-play" data-sid="721211">
<a href="javascript:;">另一首情歌 (feat. 袁田)</a>
</h3> <p>白水&nbsp;/&nbsp;5748次播放</p>
</div>
<span class="days">(上榜11天)</span>
<span class="trend arrow-stay"> 0 </span>
</li>
</ul>
'''

selenium和phantomjs,完成豆瓣音乐排行榜的内容爬取的更多相关文章

  1. Pyhton网络爬虫实例_豆瓣电影排行榜_Xpath方法爬取

    -----------------------------------------------------------学无止境------------------------------------- ...

  2. Pyhton网络爬虫实例_豆瓣电影排行榜_BeautifulSoup4方法爬取

    -----------------------------------------------------------学无止境------------------------------------- ...

  3. selenium在爬虫中的应用之动态数据爬取

    一.selenium概念 selenium 是一个基于浏览器自动化的模块 selenium爬虫之间的关联: 1.便捷的获取动态加载的数据 2.实现模拟登录 基本使用 pip install selen ...

  4. selenium配合phantomjs实现爬虫功能,并把抓取的数据写入excel

    # -*- coding: UTF-8 -*- ''' Created on 2016年5月13日 @author: csxie ''' import datetime from Base impor ...

  5. 豆瓣电影排行简单数据爬取_pyhton

    先安装一下requests和bs4库: cmd下面:python -m pip install bs4 -i https://pypi.douban.com/simple 代码: import req ...

  6. Python爬取豆瓣音乐存储MongoDB数据库(Python爬虫实战1)

    1.  爬虫设计的技术 1)数据获取,通过http获取网站的数据,如urllib,urllib2,requests等模块: 2)数据提取,将web站点所获取的数据进行处理,获取所需要的数据,常使用的技 ...

  7. Python selenium+phantomjs的js动态爬取

    Selenium是一个用于Web应用程序测试的工具.Selenium测试直接运行在浏览器中,就像真正的用户在操作一样.支持的浏览器包括IE.Mozilla Firefox.Chrome等.Phanto ...

  8. python爬虫:了解JS加密爬取网易云音乐

    python爬虫:了解JS加密爬取网易云音乐 前言 大家好,我是"持之以恒_liu",之所以起这个名字,就是希望我自己无论做什么事,只要一开始选择了,那么就要坚持到底,不管结果如何 ...

  9. python+selenium+xpath 爬取天眼查工商基本信息

    # -*- coding:utf-8 -*-# author: kevin# CreateTime: 2018/8/16# software-version: python 3.7 import ti ...

随机推荐

  1. 连接tomcat时,输入telnet localhost 8080后无法再次输入

    初次接触服务器时,一般会在本地建立一个微型服务器,今天在使用Apache的tomcat时,为了在命令行下访问服务器中webapps下的自定义资源:首先打开命令行窗口,然后输入telnet localh ...

  2. OpenLayers绘制地图,无需外网,内网访问,提高安全性。

    1. 首先引入ol ,npm i --save ol 2. 创建地图 一个地图初步就这样完成了. 3. 怎么与后台进行交互? 具体参考文档:http://weilin.me/ol3-primer/ch ...

  3. linux典型应用对系统资源使用的特点

  4. openssl版本升级

    1.查看openssl版本 [root@node2 openssh-8.0p1]# openssl version OpenSSL 1.0.1e-fips 11 Feb 2013 2.下载指定版本的o ...

  5. (ACM模板)二元组pair

    #include<iostream> #include<cstdio> #include<utility> using namespace std; typedef ...

  6. [POJ1821]Fence(单调队列优化dp)

    [poj1821]Fence 有 N 块木板从左至右排成一行,有 M 个工匠对这些木板进行粉刷,每块木板至多被粉刷一次.第 i 个工匠要么不粉刷,要么粉刷包含木板 Si 的,长度不超过Li 的连续一段 ...

  7. Sass-插值#{}

    使用 CSS 预处理器语言的一个主要原因是想使用 Sass 获得一个更好的结构体系.比如说你想写更干净的.高效的和面向对象的 CSS.Sass 中的插值(Interpolation)就是重要的一部分. ...

  8. mongodb 自增序列实现

    MongoDB没有像SQL数据库外开箱即用自动递增功能.默认情况下,它采用了12字节的ObjectId为_id字段作为主键来唯一地标识文档.然而,可能存在的情况,我们可能希望_id字段有一些其它的自动 ...

  9. python基础知识1

    1.何为json? json 是一种轻量级的数据交换格式,采用完全独立于编程语言的文本格式来存储和表示数据.简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言. 易于人阅读和编写,同时也易于机 ...

  10. java资料搜索网站

    http://yun.java1234.com/ 盘多多 B站 一个集成了很多springboot功能的地址 https://gitbub.com/runzhenghengbin/SpringBoot ...