Python爬虫包BeautifulSoup学习实例(五)


Posted in Python onJune 17, 2018

本文为大家分享了Python爬虫包BeautifulSoup学习实例,具体内容如下

BeautifulSoup

使用BeautifulSoup抓取豆瓣电影的一些信息。

# -*- coding: utf-8 -*-
# @Author: HaonanWu
# @Date:  2016-12-24 16:18:01
# @Last Modified by:  HaonanWu
# @Last Modified time: 2016-12-24 17:25:33

import urllib2
import json
from bs4 import BeautifulSoup

def nowplaying_movies(url):
  user_agent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36'
  headers = {'User-Agent':user_agent}
  request = urllib2.Request(url = url, headers = headers)
  response = urllib2.urlopen(request)
  soup_packetpage = BeautifulSoup(response, 'lxml')
  items = soup_packetpage.findAll("li", class_="list-item")
  # items = soup_packetpage.findAll("li", {"class" : "list-item"}) 等价写法
  movies = []
  for item in items:
    if item.attrs['data-category'] == 'nowplaying':
      movie = {}
      movie['title'] = item.attrs['data-title']
      movie['score'] = item.attrs['data-score']
      movie['director'] = item.attrs['data-director']
      movie['actors'] = item.attrs['data-actors']
      movies.append(movie)
      print('%(title)s|%(score)s|%(director)s|%(actors)s' % movie)

  return movies



if __name__ == '__main__':
  url = 'https://movie.douban.com/nowplaying/beijing/'
  movies = nowplaying_movies(url)

  print('%s' % json.dumps(movies, sort_keys=True, indent=4, separators=(',', ': ')))

HTMLParser

使用HTMLParser实现上述功能

这里有一些HTMLParser的基础教程

由于HtmlParser自2006年以后就再没更新,目前很多人推荐使用jsoup代替它。

# -*- coding: utf-8 -*-
# @Author: HaonanWu
# @Date:  2016-12-24 15:57:54
# @Last Modified by:  HaonanWu
# @Last Modified time: 2016-12-24 17:03:27
from HTMLParser import HTMLParser
import urllib2
import json

class MovieParser(HTMLParser):
  def __init__(self):
    HTMLParser.__init__(self)
    self.movies = []

  def handle_starttag(self, tag, attrs):
    def _attr(attrlist, attrname):
      for attr in attrlist:
        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['director'] = _attr(attrs, 'data-director')
      movie['actors'] = _attr(attrs, 'data-actors')
      self.movies.append(movie)
      print('%(title)s|%(score)s|%(director)s|%(actors)s' % movie)


def nowplaying_movies(url):
  headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36'}  
  req = urllib2.Request(url, headers=headers)
  s = urllib2.urlopen(req)
  parser = MovieParser()
  parser.feed(s.read())
  s.close()
  return parser.movies


if __name__ == '__main__':
  url = 'https://movie.douban.com/nowplaying/beijing/'
  movies = nowplaying_movies(url)

  print('%s' % json.dumps(movies, sort_keys=True, indent=4, separators=(',', ': ')))

以上全部为本篇文章的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python内置的字符串处理函数整理
Jan 29 Python
记录Django开发心得
Jul 16 Python
Python线程的两种编程方式
Apr 14 Python
在python plt图表中文字大小调节的方法
Jul 08 Python
解决安装python3.7.4报错Can''t connect to HTTPS URL because the SSL module is not available
Jul 31 Python
解决Django中调用keras的模型出现的问题
Aug 07 Python
python中@property和property函数常见使用方法示例
Oct 21 Python
python实现大量图片重命名
Mar 23 Python
如何基于python实现归一化处理
Jan 20 Python
django2.2 和 PyMySQL版本兼容问题
Feb 17 Python
tensorflow下的图片标准化函数per_image_standardization用法
Jun 30 Python
python搜索算法原理及实例讲解
Nov 18 Python
Python爬虫包BeautifulSoup实例(三)
Jun 17 #Python
Python爬虫包BeautifulSoup异常处理(二)
Jun 17 #Python
Python爬虫包BeautifulSoup简介与安装(一)
Jun 17 #Python
python主线程捕获子线程的方法
Jun 17 #Python
Python实现获取邮箱内容并解析的方法示例
Jun 16 #Python
Python实现自定义函数的5种常见形式分析
Jun 16 #Python
Python基于jieba库进行简单分词及词云功能实现方法
Jun 16 #Python
You might like
php中url传递中文字符,特殊危险字符的解决方法
2013/08/17 PHP
PHP中使用循环实现的金字塔图形
2014/11/08 PHP
PHP模板引擎Smarty内置变量调解器用法详解
2016/04/11 PHP
Centos7 Yum安装PHP7.2流程教程详解
2019/07/02 PHP
如何实现浏览器上的右键菜单
2006/07/10 Javascript
jQuery ul标签下拉菜单演示代码
2010/12/11 Javascript
extjs 初始化checkboxgroup值的代码
2011/09/21 Javascript
Bootstrap的基本应用要点浅析
2016/12/19 Javascript
微信小程序实现皮肤功能(夜间模式)
2017/06/18 Javascript
angularjs实现猜大小功能
2017/10/23 Javascript
JavaScript动态加载重复绑定问题
2018/04/01 Javascript
vue 纯js监听滚动条到底部的实例讲解
2018/09/03 Javascript
js设计模式之代理模式及订阅发布模式实例详解
2019/08/15 Javascript
Python使用Socket(Https)Post登录百度的实现代码
2012/05/18 Python
Python实现对比不同字体中的同一字符的显示效果
2015/04/23 Python
python基于socket实现网络广播的方法
2015/04/29 Python
Python入门学习指南分享
2018/04/11 Python
python中的变量如何开辟内存
2018/06/26 Python
python实现从pdf文件中提取文本,并自动翻译的方法
2018/11/28 Python
Python简直是万能的,这5大主要用途你一定要知道!(推荐)
2019/04/03 Python
python实现将文件夹内的每张图片批量分割成多张
2019/07/22 Python
使用Python爬虫库BeautifulSoup遍历文档树并对标签进行操作详解
2020/01/25 Python
简单了解pytest测试框架setup和tearDown
2020/04/14 Python
Staples美国官方网站:办公用品一站式采购
2016/07/28 全球购物
阿迪达斯奥地利官方商城:adidas.at
2016/10/16 全球购物
AC Lens:购买隐形眼镜
2017/02/26 全球购物
贝玲妃英国官网:Benefit英国
2018/02/03 全球购物
英国受欢迎的运动鞋和街头服装商店:Footasylum
2018/06/12 全球购物
什么是Smarty变量操作符?如何使用Smarty变量操作符
2014/07/18 面试题
linux面试题参考答案(8)
2016/04/19 面试题
常见的软件开发流程有哪些
2015/11/14 面试题
计算机网络毕业生自荐信
2013/10/01 职场文书
自我鉴定怎么写
2013/12/05 职场文书
个性与发展自我评价
2014/02/11 职场文书
传播学专业毕业生自荐书
2014/07/01 职场文书
PHP中国际化的字符串排序和比较对象详解
2021/08/23 PHP