一个简单的python爬虫程序 爬取豆瓣热度Top100以内的电影信息

一个简单的python爬虫程序 爬取豆瓣热度Top100以内的电影信息,第1张

概述概述这是一个简单的python爬虫程序,仅用作技术学习与交流,主要是通过一个简单的实际案例来对网络爬虫有个基础的认识。

概述

这是一个简单的Python爬虫程序,仅用作技术学习与交流,主要是通过一个简单的实际案例来对网络爬虫有个基础的认识。

什么是网络爬虫

简单的讲,网络爬虫就是模拟人访问web站点的行为来获取有价值的数据。专业的解释:百度百科

分析爬虫需求

确定目标

爬取豆瓣热度在top100以内的电影的一些信息,包括电影的名称、豆瓣评分、导演、编剧、主演、类型、制片国家/地区、语言、上映日期、片长、IMDb链接等信息。

分析目标

1.借助工具分析目标网页

首先,我们打开豆瓣电影・热门电影,会发现页面总共20部电影,但当查看页面源代码当时候,在源代码中根本找不到这些电影当信息。这是为什么呢?原来豆瓣在这里是通过AJAX技术获取电影信息,再动态的将数据加载到页面中的。这就需要借助Chrome的开发者工具,先找到获取电影信息的API。

然后对电影详情页进行分析

思路分析

具体实现

开发环境

python3.6

pycharm

主要依赖库

urllib -- 基础性的网络相关 *** 作

lxml -- 通过xpath语法解析HTML页面

Json -- 对通过API获取的JsON数据进行 *** 作

re -- 正则 *** 作

代码实现

from urllib import requestfrom lxml import etreeimport Jsonimport reimport ssl# 全局取消证书验证ssl._create_default_https_context = ssl._create_unverifIEd_contextdef get_headers():  """  返回请求头信息  :return:  """  headers = {    'User-Agent': "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) "           "AppleWebKit/537.36 (KHTML,like Gecko) "           "Chrome/65.0.3325.181 Safari/537.36"  }  return headersdef get_url_content(url):  """  获取指定url的请求内容  :param url:  :return:  """  content = ''  headers = get_headers()  res = request.Request(url,headers=headers)  try:    resp = request.urlopen(res,timeout=10)    content = resp.read().decode('utf-8')  except Exception as e:    print('exception: %s' % e)  return contentdef parse_content(content):  """  解析网页  :param content:  :return:  """  movIE = {}  HTML = etree.HTML(content)  try:    info = HTML.xpath("//div[@ID='info']")[0]    movIE['director'] = info.xpath("./span[1]/span[2]/a/text()")[0]    movIE['screenwriter'] = info.xpath("./span[2]/span[2]/a/text()")[0]    movIE['actors'] = '/'.join(info.xpath("./span[3]/span[2]/a/text()"))    movIE['type'] = '/'.join(info.xpath("./span[@property='v:genre']/"                      "text()"))    movIE['initialReleaseDate'] = '/'.\      join(info.xpath(".//span[@property='v:initialReleaseDate']/text()"))    movIE['runtime'] = \      info.xpath(".//span[@property='v:runtime']/text()")[0]    def str_strip(s):      return s.strip()    def re_parse(key,regex):      ret = re.search(regex,content)      movIE[key] = str_strip(ret[1]) if ret else ''    re_parse('region',r'<span >制片国家/地区:</span>(.*?)<br/>')    re_parse('language',r'<span >语言:</span>(.*?)<br/>')    re_parse('imdb',r'<span >IMDb链接:</span> <a href="(.*?)" rel="external nofollow" '             r'target="_blank" >')  except Exception as e:    print('解析异常: %s' % e)  return movIEdef spIDer():  """  爬取豆瓣前100部热门电影  :return:  """  recommend_moives = []  movIE_API = 'https://movIE.douban.com/j/search_subjects?' \        'type=movIE&tag=%E7%83%AD%E9%97%A8&sort=recommend' \        '&page_limit=100&page_start=0'  content = get_url_content(movIE_API)  Json_dict = Json.loads(content)  subjects = Json_dict['subjects']  for subject in subjects:    content = get_url_content(subject['url'])    movIE = parse_content(content)    movIE['Title'] = subject['Title']    movIE['rate'] = subject['rate']    recommend_moives.append(movIE)    print(len(recommend_moives))  print(recommend_moives)if __name__ == '__main__':  spIDer()

效果

总结

本文较详细的阐述了一个爬虫从需求->分析->实现的过程,并给出了具体的代码实现。通过对本文的学习,我们可以了解到网络爬虫的一些基本的知识,以及python的一些基本库的使用方法。接下来我会使用一些高级些的网络 *** 作相关的库以及对抓取到的数据做个存储的方式,来更深层次的理解python网络爬虫。

特别声明

1. 本文涉及到的豆瓣网是国内知名网站,若有侵权之处,请告知。
2. 本文属作者原创,转载请标明出处;未经允许,不得用于商业用途。
3. 本文只是用作网络爬虫技术学习交流,读者涉及到的任何侵权问题,与本文作者无关。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。

您可能感兴趣的文章:Python爬虫信息输入及页面的切换方法python爬虫爬取淘宝商品信息(selenum+phontomjs)python爬虫爬取淘宝商品信息Python实现可获取网易页面所有文本信息的网易网络爬虫功能示例使用python爬虫实现网络股票信息爬取的demopython爬虫_微信公众号推送信息爬取的实例Python网络爬虫与信息提取(实例讲解)Python爬虫实现网页信息抓取功能示例【URL与正则模块】Python爬虫框架Scrapy实战之批量抓取招聘信息python定向爬虫校园论坛帖子信息 总结

以上是内存溢出为你收集整理的一个简单的python爬虫程序 爬取豆瓣热度Top100以内的电影信息全部内容,希望文章能够帮你解决一个简单的python爬虫程序 爬取豆瓣热度Top100以内的电影信息所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1204679.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存