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中的__init__ 、__new__、__call__小结
Apr 25 Python
在Python程序中实现分布式进程的教程
Apr 28 Python
Python实现删除文件但保留指定文件
Jun 21 Python
Python实现文件按照日期命名的方法
Jul 09 Python
Python中模块string.py详解
Mar 12 Python
python发送邮件实例分享
Jul 28 Python
pandas 选择某几列的方法
Jul 03 Python
使用pip发布Python程序的方法步骤
Oct 11 Python
python 使用 requests 模块发送http请求 的方法
Dec 09 Python
Python使用POP3和SMTP协议收发邮件的示例代码
Apr 16 Python
细数nn.BCELoss与nn.CrossEntropyLoss的区别
Feb 29 Python
Python实现简单得递归下降Parser
May 02 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 array_multisort函数 对数据库结果进行复杂排序
2013/06/08 PHP
TextArea 控件的最大长度问题(js json)
2009/12/16 Javascript
读jQuery之六 缓存数据功能介绍
2011/06/21 Javascript
ie9 提示'console' 未定义问题的解决方法
2014/03/20 Javascript
基于javascript编写简单日历
2016/05/02 Javascript
JS简单获取客户端IP地址的方法【调用搜狐接口】
2016/09/05 Javascript
js获取ip和地区
2017/03/10 Javascript
使用vue制作FullPage页面滚动效果
2017/08/21 Javascript
AnglarJs中的上拉加载实现代码
2018/02/08 Javascript
vue history 模式打包部署在域名的二级目录的配置指南
2019/07/02 Javascript
在vue项目实现一个ctrl+f的搜索功能
2020/02/28 Javascript
[04:03]2014DOTA2西雅图国际邀请赛 LGD战队巡礼
2014/07/07 DOTA
利用Python实现Windows下的鼠标键盘模拟的实例代码
2017/07/13 Python
一道python走迷宫算法题
2018/01/22 Python
Python程序运行原理图文解析
2018/02/10 Python
python微信公众号之关键词自动回复
2018/06/15 Python
Python基于matplotlib画箱体图检验异常值操作示例【附xls数据文件下载】
2019/01/07 Python
python实现AES加密解密
2019/03/28 Python
Python为何不能用可变对象作为默认参数的值
2019/07/01 Python
django创建超级用户时指定添加其它字段方式
2020/05/14 Python
美国护肤咨询及美容产品电商:Askderm
2017/02/24 全球购物
澳大利亚顶级美发和美容贸易超市:glamaCo
2020/01/19 全球购物
医科大学生的自我评价
2013/12/04 职场文书
餐饮业创业计划书范文
2014/01/06 职场文书
给面试官的感谢信
2014/02/01 职场文书
《十六年前的回忆》教学反思
2014/02/14 职场文书
餐厅楼面部长岗位职责范文
2014/02/16 职场文书
金融学专业大学生职业生涯规划
2014/03/07 职场文书
研讨会主持词
2014/04/02 职场文书
2014镇党委班子对照检查材料思想汇报
2014/09/23 职场文书
小学教师学习党的群众路线教育实践活动心得体会
2014/10/31 职场文书
个人借款协议书范本
2014/11/17 职场文书
2014年行政部工作总结
2014/11/19 职场文书
通知的写法
2015/04/23 职场文书
2016年清明节期间群众祭祀活动工作总结
2016/04/01 职场文书
python pyhs2 的安装操作
2021/04/07 Python