学习的第四个爬虫

  

  1. from lxml import etree
  2. import requests
  3. BASE_D = 'http://www.dytt8.net'
  4. headers = {
  5. 'User-Agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:62.0) Gecko/20100101 Firefox/62.0"
  6. }
  7. def get_detail_urls(url):
  8. response = requests.get(url, headers=headers)
  9. text = response.text
  10. html = etree.HTML(text)
  11. detail_urls = html.xpath("//table[@class='tbspan']//a/@href")
  12. detail_urls = map(lambda url: BASE_D+url, detail_urls)
  13. return detail_urls
  14. def parse_detail_page(url):
  15. movie = {}
  16. response = requests.get(url, headers=headers)
  17. text = response.content.decode('gbk')
  18. html = etree.HTML(text)
  19. title = html.xpath("//div[@class='title_all']//font[@color='#07519a']/text()")[0]
  20. # for x in title:
  21. # print(etree.tostring(x,encoding='utf-8').encode('utf-8'))
  22. movie['title'] = title
  23. zoomE = html.xpath("//div[@id='Zoom']")[0]
  24. imgs = zoomE.xpath(".//img/@src")
  25. cover = imgs[0]
  26. # screenshot = imgs[1]
  27. movie['cover'] = cover
  28. #movie['screenshot'] = screenshot
  29.  
  30. def parse_info(info,rule):
  31. return info.replace(rule,"").strip()
  32. infos = zoomE.xpath(".//text()")
  33. for index,info in enumerate(infos):
  34. # print(info)
  35. # print(index)
  36. # print("="*30)
  37. if info.startswith("◎年  代"):
  38. info = parse_info(info, "◎年  代")
  39. movie['year'] = info
  40. elif info.startswith("◎产  地"):
  41. info = parse_info(info, "◎产  地")
  42. movie['country'] = info
  43. elif info.startswith("◎类  别"):
  44. info = parse_info(info, "◎类  别")
  45. movie['category'] = info
  46. elif info.startswith("◎豆瓣评分"):
  47. info = parse_info(info, "◎豆瓣评分")
  48. movie['category'] = info
  49. elif info.startswith("◎片  长"):
  50. info = parse_info(info, "◎片  长")
  51. movie['duration'] = info
  52. elif info.startswith("◎导  演"):
  53. info = parse_info(info, "◎导  演")
  54. movie['director'] = info
  55. elif info.startswith("◎主  演"):
  56. info = parse_info(info, "◎主  演")
  57. actors = [info]
  58. for x in range(index+1, len(infos)):
  59. actor = infos[x].strip()
  60. if actor.startswith("◎"):
  61. break
  62. actors.append(actor)
  63. movie['actors'] = actors
  64. elif info.startswith("◎简  介 "):
  65. info = parse_info(info, "◎简  介 ")
  66. for x in range(index+1, len(infos)):
  67. profile = infos[x].strip()
  68. movie["profile"] = profile
  69. download_url = html.xpath("//td[@bgcolor='#fdfddf']/a/@href")[0]
  70. movie['download_url'] = download_url
  71. return movie
  72. def spider():
  73. base_url = "http://www.dytt8.net/html/gndy/dyzz/list_23_{}.html"
  74. movies = []
  75. for x in range(1,8):
  76. # print("="*30)
  77. # print(x)
  78. url = base_url.format(x)
  79. detail_urls = get_detail_urls(url)
  80. for detail_url in detail_urls:
  81. movie = parse_detail_page(detail_url)
  82. movies.append(movie)
  83. print(movie)
  84. if __name__ =='__main__':
  85. spider()

python 爬虫系列04-电影天堂连接爬虫的更多相关文章

  1. Python多线程爬虫爬取电影天堂资源

    最近花些时间学习了一下Python,并写了一个多线程的爬虫程序来获取电影天堂上资源的迅雷下载地址,代码已经上传到GitHub上了,需要的同学可以自行下载.刚开始学习python希望可以获得宝贵的意见. ...

  2. Python爬虫 -- 抓取电影天堂8分以上电影

    看了几天的python语法,还是应该写个东西练练手.刚好假期里面看电影,找不到很好的影片,于是有个想法,何不搞个爬虫把电影天堂里面8分以上的电影爬出来.做完花了两三个小时,撸了这么一个程序.反正蛮简单 ...

  3. 爬虫系列 | 6、详解爬虫中BeautifulSoup4的用法

    bs4,全称BeautifulSoup 4 , 它是Python独有的一种解析方式.也就是说只有Python语言才可以通过这种方式去解析数据. BeautifulSoup 3 只支持Python2,所 ...

  4. 爬虫day 04(通过登录去爬虫 解决django的csrf_token)

    #通过登录去爬虫 #首先要有用户名和密码 import urllib.request import http.cookiejar from lxml import etree head = { 'Co ...

  5. Python3爬虫系列:理论+实验+爬取妹子图实战

    Github: https://github.com/wangy8961/python3-concurrency-pics-02 ,欢迎star 爬虫系列: (1) 理论 Python3爬虫系列01 ...

  6. 一篇文章教会你利用Python网络爬虫获取电影天堂视频下载链接

    [一.项目背景] 相信大家都有一种头疼的体验,要下载电影特别费劲,对吧?要一部一部的下载,而且不能直观的知道最近电影更新的状态. 今天小编以电影天堂为例,带大家更直观的去看自己喜欢的电影,并且下载下来 ...

  7. python 全栈开发,Day134(爬虫系列之第1章-requests模块)

    一.爬虫系列之第1章-requests模块 爬虫简介 概述 近年来,随着网络应用的逐渐扩展和深入,如何高效的获取网上数据成为了无数公司和个人的追求,在大数据时代,谁掌握了更多的数据,谁就可以获得更高的 ...

  8. 【Python】理想论坛帖子读取爬虫1.04版

    1.01-1.03版本都有多线程争抢DB的问题,线程数一多问题就严重了. 这个版本把各线程要添加数据的SQL放到数组里,等最后一次性完成,这样就好些了.但乱码问题和未全部完成即退出现象还在,而且速度上 ...

  9. scrapy电影天堂实战(二)创建爬虫项目

    公众号原文 创建数据库 我在上一篇笔记中已经创建了数据库,具体查看<scrapy电影天堂实战(一)创建数据库>,这篇笔记创建scrapy实例,先熟悉下要用到到xpath知识 用到的xpat ...

随机推荐

  1. 第20章-使用JMX管理Spring Bean

    Spring对DI的支持是通过在应用中配置bean属性,这是一种非常不错的方法.不过,一旦应用已经部署并且正在运行,单独使用DI并不能帮助我们改变应用的配置.假设我们希望深入了解正在运行的应用并要在运 ...

  2. Http Live Streaming 实现iphone在线播放视频[转]

    http://hi.baidu.com/lphack/item/83865611c5f82c8988a956df 本人新手,难免会出错,请各位指点! 最近要做一个项目,是通过iphone来播放工厂摄像 ...

  3. MySQL性能调优与架构设计——第2章 MySQL架构组成

    第2章 MySQL架构组成 前言   麻雀虽小,五脏俱全.MySQL 虽然以简单著称,但其内部结构并不简单.本章从MySQL物理组成.逻辑组成,以及相关工具几个角度来介绍 MySQL 的整体架构组成, ...

  4. SQL cast 函数

    (1).CAST()函数的参数是一个表达式,它包括用AS关键字分隔的源值和目标数据类型.以下例子用于将文本字符串'12'转换为整型: SELECT CAST('12' AS int) (2).返回值是 ...

  5. 【转】Android android listview的HeadView左右切换图片(仿新浪,网易,百度等切换图片)

    首先我们还是看一些示例:(网易,新浪,百度)      下面我简单的介绍下实现方法:其实就是listview addHeaderView.只不过这个view是一个可以切换图片的view,至于这个vie ...

  6. 將sql server 2008R2 Max memory 意外設為0

    做sql server 內存Max memory 設定時大意,誤把最大值設為0,怎麼著都連不上DataBase,哪真叫個急呀,最後還是看到一條文命令把救回來了,其它很簡單急的時候就是沒想出來. 1.暫 ...

  7. 小程序上传多图片多附件多视频 c#后端

    前言: 最近在研究微信小程序,本人自己是C#写后端的;感觉小程序挺好玩的,就自己研究了一下:刚好今天又给我需求,通过小程序上传多图 然后C#后端保存到服务器: 用NET明白 前端上传需要用到流,然后就 ...

  8. VSCode调试C#控制台与单元测试

    公司前端最近项目里面在用VSCode编写前端代码,觉得这个编辑器很轻便,既然是微软出的,肯定支持C#,就去网上查了查资料,发现还真是支持C#,并且蛮多地方用到dotnet命令,哈哈. 1.powers ...

  9. c# 两个字符串,s="aeiou",s2="welcome to Quantum Asia"

    c#  两个字符串,s="aeiou",s2="welcome to Quantum Asia" 方案一: 使用while循环: static void Mai ...

  10. SiriShortCut模型建立及数据交互逻辑

    1.模型数据需求 意图: 手机号 密码 网关ID 打开该情景的命令 情景号 情景名 情景背景图 添加该意图时的 token值 主程序登陆共享数据 手机号 token值 2.操作逻辑 1.意图被唤起 获 ...