豆瓣热评电影爬取
来源:互联网 发布:淘宝考试虚拟类目下 编辑:程序博客网 时间:2024/04/27 17:00
豆瓣热评电影爬取
基础知识:
- url:
- url分为三部分,协议,路径,参数。例如http://blog.csdn/postedit?ref=toolbar&中http为url协议,blog.csdn为主机名,/postedi为路径。?后面的 为参数
- 参数以?开始,多个参数以&分割,参数中如果含有中文字符将编码为十六进制数,并在十六进制数前加%表示,参数格式为key=value
- cookie:
- 指某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密)。
- 在爬虫中我们如果想要爬取需要登录的页面,直接爬取是不行的。但是我们可以利用urllib2库保存我们登录的cookie,然后就可以进行抓取了。
- 这里需要注意cookie是服务器保存在客户端的数据,不由浏览器产生。
- 客户端发送cookie的格式为Cookie:key1=value1;key2=value2。服务器端保存cookie在客户端是格式为Set-Cookie:key1=value;path=/;domain=xx;
- Cookie的属性:Domain和Path:定义cookie的作用域,当指定domain时,这个domain及其子域名都会包含这个cookie。Expires:定义cookie的生命周期。HttpOnly:禁止脚本访问
- urllib库相关:
1. urlopen(url,data,timeout):第一个参数即为url,第二个参数data是访问url时需要传送的数据,第三个timeout是设置超时时间。Data参数默认为None,timeout参数默认为spython爬虫python爬虫python爬虫python爬虫python爬虫python爬虫python爬虫python爬虫python爬虫
2. response类:
1.read(size):读取指定大小的数据
2. readline():读取一行
3.readlines():读取多行
4.close():关闭
5.getcode():获取网站响应码
3. urlretrieve(url,filename,reportbook,data):将远程数据下载到本地。参数filename指定保存本地路径,reportbook我回调函数(可以利用此函数显示下载进度),data为post到服务器的数据
4. urlencode():对字符串中除了-_.之外的所以字非字母字符都将被替换成百分号(%)后跟两位十六进制数,空格则编码为加号(+)
5. urldecode():还原 URL 编码字符串
4. urllib2库
提供了request方法,cookie处理,鉴权,但不含有urlencode
urlopen参数可以传入一个request请求,它其实就是一个Request类的实例,构造时需要传入Url,Data等等的内容。先request然后urlopen可以更好的使网站接受
5. HTMLParser类
HTMLParser是python用来解析html和xhtml文件格式的模块。它可以分离出html里面的标签数据等内容。HTMLParser采用的是一种事件驱动的模式,当HTMLParser找到一个特定的标记时,它会去调用一个用户定义的函数,以此来通知程序处理。它主要的回调函数的命名都是handler_开头的,都HTMLParser的成员函数。当我们使用时,就从HTMLParser派生出新的类,然后重新定义这几个以handler_开头的函数即可。
HTMLParser.feed(data):提供一些文本给解析器。在由完整元素组成的限度内进行处理,不完整的数据被缓冲直到更多的数据提供或者close()被调用。
HTMLParser.close():关闭
HTMLParser.handle_starttag(tag,attrs) :该方法用来处理开始标签。其目的是被派生类重写;基类什么也不实现。tag参数是转换成小写的标签名称。attrs参数是一个(name,value)对包含了在标签<>中得属性。name将会转换成小写,并且value中得引号会被引出,并且字符串和实体引用将会被替代
HTMLParser.handle_startendtag(tag,attrs) :类似于handle_starttag(),不过用来处理遇到XHTML风格的空标签(<a .../>)
实现步骤:
- 确定爬取目标:实现对豆瓣热评电影电影名称,评分,上映时间,导演,演员相关信息的爬取
- 分析网页结构:用firefox的开发者工具箱确定到爬取目标在网页中发位置
- 编写代码
import urllib.requestfrom html.parser import HTMLParser class MovieParser(HTMLParser): def __init__(self): HTMLParser.__init__(self) self.movies = [] def handle_starttag(self,tag,attrs): def _attr(attrslist,attrname): for attr in attrslist: if attr[0] == attrname: return attr[1] return None if tag == 'li' and _attr(attrs,'data-title') and _attr(attrs,'data-category') == 'nowplaying': movie = {} movie['title'] = _attr(attrs,'data-title') movie['score'] = _attr(attrs,'data-score') movie['release'] = _attr(attrs,'data-release') movie['director'] = _attr(attrs,'data-director') movie['actors'] = _attr(attrs,'data-actors') self.movies.append(movie) def later_movie(url): headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0'} req = urllib.request.Request(url,headers=headers) s = urllib.request.urlopen(req) content = s.read().decode('utf-8')#request返回字节,feed需要字符串 parser = MovieParser() parser.feed(content) s.close() return parser.movies if __name__ == '__main__': url = 'http://movie.douban.com/nowplaying/xiamen/' movies = later_movie(url) for movie in movies: print('%(title)s|%(score)s|%(release)s|%(director)s|%(actors)s' % movie)
结果截图:
- 豆瓣热评电影爬取
- Python 爬取豆瓣热映电影 (转载)
- 爬取豆瓣的电影
- Python爬取豆瓣电影
- 爬取豆瓣电影数据
- scrapy爬取豆瓣电影
- Python爬取豆瓣电影
- 爬取豆瓣所有电影
- Python爬取豆瓣电影
- 爬取豆瓣网电影信息
- Python爬取豆瓣电影top250
- python爬取豆瓣电影信息
- scrpy 豆瓣电影信息爬取
- Scrapy 爬取 豆瓣电影的短评
- Python爬取豆瓣电影Top250数据
- 爬虫小demo爬取豆瓣电影
- python+beautifulsoup爬取豆瓣电影TOP250
- python爬取豆瓣电影信息
- Cookie与Session的区别
- 高手病犯了~之打印图形1~
- 数据概论
- JS中为false的几种情况
- Action 类 中访问Webcontent目录下的文件
- 豆瓣热评电影爬取
- sklearn模型持久化
- ubuntu 安装 PHP+MySQL+Apache2环境
- TPM功能介绍
- Java Web基础——Action+Service +Dao三层的功能划分
- 图形和事件驱动程序 ---------- 画一个简单的笑脸(初学者)
- 粒子群优化算法与遗传脚本
- Note 7 燃损祸起电池三星将加强安全检查措施
- 算法竞赛入门经典第四章