爬虫实践-爬取豆瓣音乐TOP250的数据

doubanyinyue.py:

import requestsfrom lxml import etreeimport reimport pymongoimport time

client = pymongo.MongoClient(‘localhost‘, 27017)mydb = client[‘mydb‘]musictop = mydb[‘musictop‘]

headers = {    ‘User-Agent‘: ‘Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 ‘                  ‘(KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36‘}

def get_url_music(url):    html = requests.get(url, headers=headers)    selector = etree.HTML(html.text)    music_hrefs = selector.xpath(‘//a[@class="nbg"]/@href‘)    for music_href in music_hrefs:        get_music_info(music_href)

def get_music_info(url):    html = requests.get(url, headers=headers)    selector = etree.HTML(html.text)    name = selector.xpath(‘//*[@id="wrapper"]/h1/span/text()‘)[0]    # author = selector.xpath(‘//*[@id="info"]/span[1]/span/a/text()‘)author = re.findall(‘表演者:.*?>(.*?)</a>‘, html.text, re.S)[0]    styles = re.findall(‘<span class="pl">流派:</span>&nbsp;(.*?)<br />‘, html.text, re.S)    if len(styles) == 0:        style = ‘未知‘else:        style = styles[0].strip()    time = re.findall(‘发行时间:</span>&nbsp;(.*?)<br />‘, html.text, re.S)[0].strip()    publishers = re.findall(‘出版者:.*?>(.*?)</a>‘, html.text, re.S)    if len(publishers) == 0:        publisher = ‘未知‘else:        publisher = publishers[0].strip()    score = selector.xpath(‘//*[@id="interest_sectl"]/div/div[2]/strong/text()‘)[0]    print(name, author, style, time, publisher, score)    info = {        ‘name‘: name,        ‘author‘: author,        ‘style‘: style,        ‘time‘: time,        ‘publisher‘: publisher,        ‘score‘: score    }    musictop.insert_one(info)

if __name__ == ‘__main__‘:    urls = [‘https://music.douban.com/top250?start={}‘.format(str(i)) for i in range(0, 250, 25)]    for url in urls:        get_url_music(url)        time.sleep(2)

时间: 2024-08-11 10:48:00

爬虫实践-爬取豆瓣音乐TOP250的数据的相关文章

【爬虫】爬取豆瓣图书TOP250

通过xpath定位元素 使用xpath定位元素有好几种方法 // 是从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置. #!/user/bin/env python #coding:utf-8 #先是从selenium导入webdriver,然后用webdriver打开安装好的谷歌浏览器. from selenium import webdriver #打开chrom浏览器 browser =webdriver.Chrome() #访问豆瓣 browser.get('https://bo

Python爬虫:现学现用Xpath爬取豆瓣音乐

爬虫的抓取方式有好几种,正则表达式,Lxml(xpath)与Beautiful,我在网上查了一下资料,了解到三者之间的使用难度与性能 三种爬虫方式的对比. 抓取方式 性能 使用难度 正则表达式 快 困难 Lxml 快 简单 BeautifulSoup 慢 简单 这样一比较我我选择了Lxml(xpath)的方式了,虽然有三种方式,但肯定是要选择最好的方式来爬虫,这个道理大家都懂,另外有兴趣的朋友也可以去了解另外两种爬虫方式! 好了现在来讲讲xpath 由于Xpath属于lxml模块,所以首先需要安

运维学python之爬虫高级篇(五)scrapy爬取豆瓣电影TOP250

对于scrapy我们前面已经介绍了简单的应用,今天我们用一个完整的例子,爬取豆瓣电影TOP250来做一个小的练习,把scrapy阶段做一个总结. 1 环境配置 语言:Python 3.6.1 IDE: Pycharm 浏览器:firefox 爬虫框架:Scrapy 1.5.0 操作系统:Windows 10 家庭中文版 2 爬取前分析 2.1 需要保存的数据 首先确定我们要获取的内容,在items中定义字段,来将非结构化数据生成结构化数据,获取的内容主要包括:排名.电影名称.得分.评论人数.如下

Python爬虫入门 | 爬取豆瓣电影信息

这是一个适用于小白的Python爬虫免费教学课程,只有7节,让零基础的你初步了解爬虫,跟着课程内容能自己爬取资源.看着文章,打开电脑动手实践,平均45分钟就能学完一节,如果你愿意,今天内你就可以迈入爬虫的大门啦~好啦,正式开始我们的第二节课<爬取豆瓣电影信息>吧!啦啦哩啦啦,都看黑板~1. 爬虫原理1.1 爬虫基本原理听了那么多的爬虫,到底什么是爬虫?爬虫又是如何工作的呢?我们先从"爬虫原理"说起.爬虫又称为网页蜘蛛,是一种程序或脚本.但重点在于:它能够按照一定的规则,自动

03_使用scrapy框架爬取豆瓣电影TOP250

前言: 本次项目是使用scrapy框架,爬取豆瓣电影TOP250的相关信息.其中涉及到代理IP,随机UA代理,最后将得到的数据保存到mongoDB中.本次爬取的内容实则不难.主要是熟悉scrapy相关命令以及理解框架各部分的作用. 1.本次目标 爬取豆瓣电影TOP250的信息,将得到的数据保存到mongoDB中. 2.准备工作 需要安装好scrapy以及mongoDB,安装步骤这里不做赘述.(这里最好是先了解scrapy框架各个部分的基本作用和基础知识,这样方便后面的内容的理解.scrapy文档

Python 2.7_利用xpath语法爬取豆瓣图书top250信息_20170129

大年初二,忙完家里一些事,顺带有人交流爬取豆瓣图书top250 1.构造urls列表 urls=['https://book.douban.com/top250?start={}'.format(str(i) for i in range(0, 226, 25))] 2.模块 requests获取网页源代码 lxml 解析网页 xpath提取 3.提取信息 4.可以封装成函数 此处没有封装调用 python代码: #coding:utf-8 import sys reload(sys) sys.

【转】爬取豆瓣电影top250提取电影分类进行数据分析

一.爬取网页,获取需要内容 我们今天要爬取的是豆瓣电影top250页面如下所示: 我们需要的是里面的电影分类,通过查看源代码观察可以分析出我们需要的东西.直接进入主题吧! 知道我们需要的内容在哪里了,接下来就使用我们python强大的request库先获取网页内容下来吧!获取内容后,再使用一个好用的lxml库来分析网页内容,然后获取我们的内容就可以做下一步操作了.先贴出使用request库和lxml分析的代码 1 def get_page(i): 2 url = 'https://movie.d

第一个nodejs爬虫:爬取豆瓣电影图片

第一个nodejs爬虫:爬取豆瓣电影图片存入本地: 首先在命令行下 npm install request cheerio express -save; 代码: var http = require('https'); //使用https模块 var fs = require('fs');//文件读写 var cheerio = require('cheerio');//jquery写法获取所得页面dom元素 var request = require('request');//发送reques

scrapy爬取豆瓣电影top250

1 # -*- coding: utf-8 -*- 2 # scrapy爬取豆瓣电影top250 3 4 import scrapy 5 from douban.items import DoubanItem 6 7 8 class DoubanspiderSpider(scrapy.Spider): 9 name = "doubanspider" 10 # allowed_domains = ["movie.douban.com/top250"]注意这里的主页限制