Python爬虫入门 之 如何在豆瓣中获取自己喜欢的TOP N电影信息
按照一定规则自动的获取互联网上的信息(如何快速有效的利用互联网上的大量信息)
爬虫的应用
- 搜索引擎(Google、百度、Bing等搜索引擎,辅助人们检索信息)
- 股票软件(爬取股票数据,帮助人们分析决策,进行金融交易)
- Web扫描(需要对网站所有的网页进行漏洞扫描)
- 获取某网站最新文章收藏
- 爬取天气预报
- 爬取漂亮mm照片
基础知识
1.HTTP 协议
客户端发起请求,服务器接收到请求后返回格式化的数据,客户端接收数据,并进行解析和处理
2.HTML(超文本标记语言)
- 基础语法&常用系统模块
- 第三方模块requests,pyquery使用
安装:
pip install requests pip install pyquery
requests模块使用:
#requests(发起HTTP请求,并获取结果) response = requests.get('http://localhost:9999/index.html') response = requests.post() print response.content
pyquery模块使用:
page = PyQuery(html) 选择器 tag: page('title') id: page('#job_1') class: page('.job') 复合选择器 page('div#job_1') page('div.job') 子选择器 page('div#job_1 li') page('div#job_1 > li') page('div#job_1').find('li') page('div#job_1').children('li') 获取标签内的html page('div#job_1').html() 获取标签内的文本 page('div#job_1').text() 获取标签属性 page('div#job_1').attr['id']
csv模块使用:
writer = csv.writer() writer.writerow() writer.writerows()
程序运行
1.程序启动
2.运行结果
手动搜索TOP N电影信息
1.获取电影列表
2.获取电影详情超链接
3.获取电影详情
代码走读
1.程序启动
2.查找电影列表
3.查找电影详情
4.写入csv文件
源码
#encoding: utf-8 import requests from pyquery import PyQuery as pq import csv attrs = [u'超链接', u'名称', u'评分', u'导演', u'编剧', u'主演', u'类型', u'制片国家/地区', u'语言', u'上映日期', u'片长', u'又名', u'IMDb链接'] ''' 获取电影详情 ''' def attch_info(info, text, key, value): text = text.strip(' ') if text: if text in attrs: if key and value: info[key] = ' '.join(value) key = text value = [] else: value.append(text) return info, key, value ''' 解析电影信息 ''' def parse_movie_info(text, info): key = None value = [] for e in text.split(':'): e = e.strip() pos = e.rfind(' ') if -1 == pos: info, key, value = attch_info(info, e, key, value) else: info, key, value = attch_info(info, e[:pos], key, value) info, key, value = attch_info(info, e[pos:], key, value) if key not in info: info[key] = ' '.join(value) ''' 解析电影页面 ''' def crawl_info(url): info = {} print url response = requests.get(url) page = pq(response.content) content = page('div#content').eq(0) info[u'超链接'] = url info[u'名称'] = content('h1 span').eq(0).text() info[u'评分'] = content('div.rating_wrap strong.rating_num').text() info_text = content('div#info').text() parse_movie_info(info_text, info) return info ''' 获取电影列表 ''' def crawl(query_text, count): start = 0 rt_list = [] isStop = False url = 'https://movie.douban.com/subject_search?start={start}&search_text={query_text}&cat=1002' while True: response = requests.get(url.format(query_text=query_text.encode('utf-8', 'ignore'), start=start)) page = pq(response.content) links = page('div#content table a').not_('.nbg') if len(links) == 0: isStop = True for link in links: href = pq(link).attr['href'] rt_list.append(crawl_info(href)) start += 1 if len(rt_list) >= count: isStop = True break if isStop: break return rt_list ''' 写入文件 ''' def write_to_file(lines, path): with open(path, 'wb') as fhandler: writer = csv.writer(fhandler) writer.writerow(map(lambda x: x.encode('gbk', 'ignore'), attrs)) for line in lines: row = [] for key in attrs: row.append(line.get(key, '').encode('gbk', 'ignore')) writer.writerow(row) if __name__ == '__main__': query_text = raw_input(u"请输入关键字:".encode('utf-8', 'ignore')) count = raw_input(u"请输入爬取得数据量:".encode('utf-8', 'ignore')) query_text = query_text.strip().decode('utf-8') if query_text.strip() else u'长城' count = int(count) if count.isdigit() else 10 print u'关键字:{query_text}, 数量:{count}'.format(query_text=query_text, count=count) rt_list = crawl(query_text, count) write_to_file(rt_list, 'result.csv')
作者:imsilence
链接:https://www.jianshu.com/p/7eceedb39f3b
Python爬虫入门 之 如何在豆瓣中获取自己喜欢的TOP N电影信息的更多相关文章
- 如何用Python在豆瓣中获取自己喜欢的TOP N电影信息
一.什么是 Python Python (蟒蛇)是一门简单易学. 优雅健壮. 功能强大. 面向对象的解释型脚本语言.具有 20+ 年发展历史, 成熟稳定. 具有丰富和强大的类库支持日常应用. 1989 ...
- Python爬虫入门:爬取豆瓣电影TOP250
一个很简单的爬虫. 从这里学习的,解释的挺好的:https://xlzd.me/2015/12/16/python-crawler-03 分享写这个代码用到了的学习的链接: BeautifulSoup ...
- Python爬虫入门一之综述
大家好哈,最近博主在学习Python,学习期间也遇到一些问题,获得了一些经验,在此将自己的学习系统地整理下来,如果大家有兴趣学习爬虫的话,可以将这些文章作为参考,也欢迎大家一共分享学习经验. Pyth ...
- 【转载】教你分分钟学会用python爬虫框架Scrapy爬取心目中的女神
原文:教你分分钟学会用python爬虫框架Scrapy爬取心目中的女神 本博文将带领你从入门到精通爬虫框架Scrapy,最终具备爬取任何网页的数据的能力.本文以校花网为例进行爬取,校花网:http:/ ...
- python爬虫入门-开发环境与小例子
python爬虫入门 开发环境 ubuntu 16.04 sublime pycharm requests库 requests库安装: sudo pip install requests 第一个例子 ...
- Python爬虫入门教程 48-100 使用mitmdump抓取手机惠农APP-手机APP爬虫部分
1. 爬取前的分析 mitmdump是mitmproxy的命令行接口,比Fiddler.Charles等工具方便的地方是它可以对接Python脚本. 有了它我们可以不用手动截获和分析HTTP请求和响应 ...
- Python爬虫入门教程 43-100 百思不得姐APP数据-手机APP爬虫部分
1. Python爬虫入门教程 爬取背景 2019年1月10日深夜,打开了百思不得姐APP,想了一下是否可以爬呢?不自觉的安装到了夜神模拟器里面.这个APP还是比较有名和有意思的. 下面是百思不得姐的 ...
- Python 爬虫入门(二)——爬取妹子图
Python 爬虫入门 听说你写代码没动力?本文就给你动力,爬取妹子图.如果这也没动力那就没救了. GitHub 地址: https://github.com/injetlee/Python/blob ...
- Python爬虫入门之正则表达式
在前面我们已经搞定了怎样获取页面的内容,不过还差一步,这么多杂乱的代码夹杂文字我们怎样把它提取出来整理呢?下面就开始介绍一个十分强大的工具,正则表达式! 1.了解正则表达式 正则表达式是对字符串操作的 ...
随机推荐
- 审计系统---初识堡垒机180501【all】
堡垒机背景[审计系统] SRE是指Site Reliability Engineer (/运维工程师=运行维护 业务系统) 运维: 维护系统,维护业务,跟业务去走 防火墙: 禁止不必要的访问[直接访问 ...
- windows安装及配置mysql5.7
引子 mysql官方网站上没有 windows mysql5.7 64位版本msi的安装包下载,我们可以通过zip版本解压缩后手动安装配置环境. msi安装的话有32位的,基本上就是看着图形界面来一步 ...
- Notepad++调用python
***首先确保在cmd下能直接运行python*** (博主的环境:win10 下2和3共存) 接下来进入主题,用Notepad++打开py文件,然后按 F5 键弹出运行窗口,输入以下内容: pyth ...
- 高可用api接口网络部署方案
我们平时接触的产品都是7*24小时不间断服务,产品中的api接口肯定也是高可用的,下面我向大家分享一下互联网公司api接口高可用的网络部署方案. 我们一般通过http://le.quwenzhe.c ...
- 扯不清楚的virtual和abstract
定义Person类: class Person { public void Say() { Console.WriteLine("I am a person"); } } 现在,我 ...
- [SHOI2012]回家的路
题目背景 SHOI2012 D2T1 题目描述 2046 年 OI 城的城市轨道交通建设终于全部竣工,由于前期规划周密,建成后的轨道交通网络由2n2n条地铁线路构成,组成了一个nn纵nn横的交通网.如 ...
- Day9 抽象类和接口
抽象类 抽象类定义 只约定类所具有的抽象行为,没有具体实现相应行为. 语法格式 abstract class 类名{ 常量; 变量; 构造(); 访问修饰符abstract 返回类型 方法名;//抽象 ...
- 一维maxpooling
index存储的是下标 vector<int> maxpooling(vector<int> num,int size){ vector<int> result; ...
- ubuntu16.04常见的问题解决方案
问题一:关于咖啡主机和其他服务器厂商和个人虚拟机VM10安装ubuntu16.04 ubuntu16.04默认是没有root用户的,要想有必须要通过用户创建,通常安装ubuntu16.04会有个让你创 ...
- linux shell基本知识 sleep命令
在有的shell(比如linux中的bash)中sleep还支持睡眠(分,小时) sleep 睡眠1秒 sleep 1s 睡眠1秒 sleep 1m 睡眠1分 sleep 1h 睡眠1小时