有乙份工作需要我列出兩個電影院的每天電影排期資訊,我不想每次都要去貓眼上覆制貼上。所以做了個爬蟲
功能
能夠知道每天的電影排期資訊
使用限制
只能在當天使用,不能在前一晚上使用,後面我會再考慮修改
# *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....