爬虫_电影天堂 热映电影(xpath)

写了一天才写了不到100行。不过总归是按自己的思路完成了

  1 import requests
  2 from lxml import etree
  3 import time
  4
  5 BASE = ‘http://www.dytt8.net‘
  6 def get_one_page(url):
  7     headers = {‘User-Agent‘: ‘Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.75 Safari/537.36‘}
  8     try:
  9
 10         response = requests.get(url, headers=headers)
 11         response.encoding = response.apparent_encoding
 12         return response.text
 13     except:
 14         return 0
 15
 16
 17
 18 def parse_one_page_href(html):
 19     str_hrefs = []
 20     html_element = etree.HTML(html)
 21     # //div[@class="co_content8"]/ul/table//a/@href
 22     hrefs = html_element.xpath(‘//table[@class="tbspan"]//a/@href‘)
 23     for href in hrefs:
 24         href = BASE + href
 25         str_hrefs.append(href)
 26     return str_hrefs
 27
 28 """
 29 return
 30     [‘http://www.dytt8.net/html/gndy/dyzz/20180731/57193.html‘,
 31      ‘http://www.dytt8.net/html/gndy/dyzz/20180730/57192.html‘,
 32                     ......
 33      ‘http://www.dytt8.net/html/gndy/dyzz/20180702/57064.html‘,
 34      ‘http://www.dytt8.net/html/gndy/dyzz/20180630/57056.html‘]
 35 """
 36
 37
 38
 39 def get_all_pages(page_nums):
 40     hrefs = []
 41     for index in range(1, page_nums + 1):
 42         url = ‘http://www.dytt8.net/html/gndy/dyzz/list_23_‘ + str(index) + ‘.html‘
 43         html = get_one_page(url)
 44         while html == 0:
 45             time.sleep(3)
 46             html = get_one_page(url)
 47         hrefs.extend(parse_one_page_href(html))
 48     return hrefs
 49
 50
 51 def get_detail(page_nums):
 52     movie = []
 53     hrefs = get_all_pages(page_nums)
 54     for href in hrefs:  #href: every page url
 55         informations = {}
 56
 57         response = requests.get(href)
 58         response.encoding = response.apparent_encoding
 59         html = response.text
 60
 61         html_element = etree.HTML(html)
 62
 63         title = html_element.xpath(‘//font[@color="#07519a"]/text()‘)[0]
 64         informations[‘title‘] = title
 65
 66         image_src = html_element.xpath(‘//p//img/@src‘)
 67         informations[‘image_src‘] = image_src[0]
 68
 69         download_url = html_element.xpath(‘//td[@bgcolor="#fdfddf"]/a/@href‘)
 70         informations[‘download_url‘] = download_url
 71
 72         texts = html_element.xpath(‘//div[@id="Zoom"]//p/text()‘)
 73         for index, text in enumerate(texts):
 74
 75             if text.startswith(‘◎片  名‘):
 76                 text = text.replace(‘◎片  名‘, ‘‘).strip()
 77                 informations[‘english_name‘] = text
 78
 79             elif text.startswith(‘◎产  地‘):
 80                 text = text.replace(‘◎产  地‘, ‘‘).strip()
 81                 informations[‘location‘] = text
 82
 83             elif text.startswith(‘◎上映日期‘):
 84                 text = text.replace(‘◎上映日期‘, ‘‘).strip()
 85                 informations[‘date‘] = text
 86
 87             elif text.startswith(‘◎片  长‘):
 88                 text = text.replace(‘◎片  长‘, ‘‘).strip()
 89                 informations[‘time‘] = text
 90
 91             elif text.startswith(‘◎导  演‘):
 92                 text = text.replace(‘◎导  演‘, ‘‘).strip()
 93                 informations[‘director‘] = text
 94
 95             elif text.startswith(‘◎主  演‘):
 96                 text = text.replace(‘◎主  演‘, ‘‘).strip()
 97                 actors = []
 98                 actors.append(text)
 99                 for x in range(index+1, len(texts)):
100                     actor = texts[x].strip()
101                     if texts[x].startswith(‘◎简  介‘):
102                         break
103                     actors.append(actor)
104                 informations[‘actors‘] = actors
105
106             elif text.startswith(‘◎简  介 ‘):
107                 text = text.replace(‘◎简  介 ‘, ‘‘).strip()
108                 intros = []
109                 # intros.append(text)
110                 for x in range(index+1, len(texts)):
111                     intro = texts[x].strip()
112                     if texts[x].startswith(‘◎获奖情况‘):
113                         break
114                     intros.append(intro)
115                 informations[‘intros‘] = intros
116         movie.append(informations)
117     return movie
118
119
120 def main():
121     page_nums = 1  #176
122     movie = get_detail(page_nums)
123     print(movie)
124
125
126 if __name__ == ‘__main__‘:
127     main()

运行结果:(选中的是一部电影, 一页中有25部电影,网站里一共有176页)

感受到了代码的魅力了吗

原文地址:https://www.cnblogs.com/MC-Curry/p/9416127.html

时间: 2024-10-11 05:29:53

爬虫_电影天堂 热映电影(xpath)的相关文章

爬虫_豆瓣全部正在热映电影 (xpath)

单纯地练习一下xpath 1 import requests 2 from lxml import etree 3 4 5 def get_url(url): 6 html = requests.get(url) 7 return html.text 8 9 10 def parse_html(html): 11 informations = [] 12 html_element = etree.HTML(html) 13 ul = html_element.xpath('//ul[@class

python爬虫——抓取电影天堂电影信息

做个小练习,抓取的是电影天堂里面最新电影的页面.链接地址:http://www.dytt8.net/html/gndy/dyzz/index.html 首先我们需要获取里面电影详情的网页地址: import urllib2 import os import re import string # 电影URL集合 movieUrls = [] # 获取电影列表 def queryMovieList(): url = 'http://www.dytt8.net/html/gndy/dyzz/index

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

最近花些时间学习了一下Python,并写了一个多线程的爬虫程序来获取电影天堂上资源的迅雷下载地址,代码已经上传到GitHub上了,需要的同学可以自行下载.刚开始学习python希望可以获得宝贵的意见. 先来简单介绍一下,网络爬虫的基本实现原理吧.一个爬虫首先要给它一个起点,所以需要精心选取一些URL作为起点,然后我们的爬虫从这些起点出发,抓取并解析所抓取到的页面,将所需要的信息提取出来,同时获得的新的URL插入到队列中作为下一次爬取的起点.这样不断地循环,一直到获得你想得到的所有的信息爬虫的任务

python爬虫(十七) 电影天堂爬虫1

电影天堂里面的 要爬取这个页面里所有的电影信息,每个电影信息都在另一个html里,先在这里页面里把这些电影的url爬取出来 # 电影天堂爬虫 from lxml import etree import requests # 一个网址头 BASE_DOMAIN="https://www.dytt8.net" url="https://www.dytt8.net/html/gndy/dyzz/list_23_1.html" headers={ 'User-Agent':

用python+selenium抓取豆瓣电影中的正在热映前12部电影并按评分排序

抓取豆瓣电影(http://movie.douban.com/nowplaying/chengdu/)中的正在热映前12部电影,并按照评分排序,保存至txt文件 #coding=utf-8 from selenium import webdriver import unittest from time import sleep class DoubanMovie(unittest.TestCase):     def setUp(self):          self.dr = webdriv

XPath之电影天堂数据爬取

2019.5.19,今天写这个实例写了几个小时,虽然不多,100行代码左右,但是貌似是学python以来代码写得最多的一次了. 主要是看了这个视频https://www.bilibili.com/video/av51650499?from=search&seid=10478614069026676839 然后自己尝试写了一下,大部分都能写出来,就是最后获取“主演”和“简介”的时候不太好获取,需要运用到下标并使用循环. 另外,还需要注意的是,我写的这个程序是以电影名称命名然后以json格式存储在本

初始python 之 爬虫:爬取豆瓣电影最热评论

不废话,直接上干货: #!/user/bin env python # author:Simple-Sir # time:2019/7/17 22:08 # 获取豆瓣网正在上映电影最热评论 import requests from lxml import etree # 伪装浏览器 headers ={ 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/

python爬虫抓取电影天堂最新电影

该小脚本实现对电影天堂网站的最新电影查找. from bs4 import BeautifulSoup  import  urllib import  re url= 'http://www.ygdy8.net/html/gndy/dyzz/index.html' moive_url_list = [] moive_name_list = [] request = urllib.urlopen(url) response = request.read() response = unicode(r

爬取电影天堂最新电影的名称和下载链接

此次的目标是爬取电影天堂最新200页的最新电影的电影名称和下载链接,电影的下载链接在二级页面,所以需要先匹配一级页面的所有链接,然后逐个请求二级页面,代码如下: """ 爬取电影天堂2019年的电影名称和链接 """ import requests import csv from fake_useragent import UserAgent from lxml import etree import re import time import