爬取貓眼電影

2022-03-08 06:14:15 字數 3272 閱讀 3245

有乙份工作需要我列出兩個電影院的每天電影排期資訊,我不想每次都要去貓眼上覆制貼上。所以做了個爬蟲

功能

能夠知道每天的電影排期資訊

使用限制

只能在當天使用,不能在前一晚上使用,後面我會再考慮修改

# *coding:utf-8 *

import requests

import re

from bs4 import beautifulsoup

from fake_useragent import useragent

ua = useragent()

headers = '

}"""

爬蟲,爬取貓眼頁面

"""def get_one_page(url, headers):

try:

response = requests.get(url, headers=headers)

if response.status_code == 200:

return response.text

return none

except requests.requestexception:

return none

"""輸入:

html是網頁源**

name是電影院名字

date是貓眼上面每部**的日期,

格式,[匹配的日期][總日期]

例子: 12

1表示第一天,2表示總共有兩天(今天、明天或者明天、後天)

注意! 只有日期沒有場次的日期不算

"""class analyze_one_cinema(object):

def __init__(self, html, name, date):

self.html = html

self.name = name

self.date = date

self.bs = beautifulsoup(html, "html.parser")

self.all_movie_names =

self.all_movies_dates = {}

self.today = self.bs.select('.show-date')[1].get_text().split('\n')[3][-4:]

"""獲取電影名字,和生成電影名字對應的時間空表

"""def get_movie_names(self):

origin_movie_names = self.bs.select('.movie-name')

for i in origin_movie_names:

# print(self.all_movie_names)

for i in self.all_movie_names:

self.all_movies_dates[i] =

"""獲取第二天的電影排期

"""def get_movie_dates(self, id):

try:

x = self.bs.select('.plist')[id].get_text().split('\n')

date =

tmp_date =

pattern = re.compile(r'^[0-9][0-9]:[0-9][0-9]')

for i in x:

if pattern.match(i):

for i in range(0, len(tmp_date), 2):

return date

except:

pass

"""將第二天電影排期放入對應的時間表中

"""def add_movie_dates(self):

tmp = -1

for i in range(len(self.all_movie_names)):

tmp1 = self.date[i] // 10

tmp2 = self.date[i] % 10

if tmp1 == 0:

tmp = tmp + tmp2

continue

self.all_movies_dates[self.all_movie_names[i]] = self.get_movie_dates(tmp + tmp1)

tmp = tmp + tmp2

"""生成最終廣告宣傳結果

"""def result(self):

if self.name == 'xx公司1':

print("金逸電影場次")

print(self.today)

print("票價:25/張")

for key, value in self.all_movies_dates.items():

print(f"《》")

for i in value:

print(i)

if self.name == 'xx公司2':

print("中影電影場次")

print(self.today)

print("票價:22/張")

try:

for key, value in self.all_movies_dates.items():

print(f"《》")

for i in value:

print(i)

except:

pass

def start(self):

self.get_movie_names() #獲取所有的電影名字

self.add_movie_dates()

self.result()

def main():

url = ""

html = get_one_page(url, headers, )

analyze_one_cinema(html, 'xx公司1', [11,11,22,22,11,11]).start()

url = ""

html = get_one_page(url, headers)

analyze_one_cinema(html,'xx公司2', [11,11,11,22,11,11,11]).start()

if __name__ == '__main__':

main()

部分效果圖:

還不賴

Python爬取貓眼電影

不多說,直接上 import requests import re import random import pymysql import time 連線資料庫 db pymysql.connect host localhost port 3306,user root passwd a db pyt...

貓眼電影影評爬取

電影的影評介面如下 這個可以在網上搜到,也可以自己抓包分析 這裡簡單的分析一下引數的含義 1218029 貓眼電影的id 這裡就是 少年的你 的電影id了 offset 偏移,貌似是依次增加15 我們可以每次增加offset來進行爬取,即讓offset每次增加15。我們通過這種方式來構造url,傳送...

爬取貓眼電影排行100電影

import json import requests from requests.exceptions import requestexception import re import time 獲取單頁的內容 def get one page url try response requests....