定制小程序开发分析Python7个爬虫小案例(附源码)

        本次的7个python定制小程序开发爬虫小案例涉及到了re正则、、beautiful soup、selenium等知识点,定制小程序开发非常适合刚入门python定制小程序开发爬虫的小伙伴参考学习。注:定制小程序开发若涉及到版权或隐私问题,定制小程序开发请及时联系我删除即可。

1.定制小程序开发使用正则表达式和文件定制小程序开发操作爬取并保存“百度贴吧”定制小程序开发某帖子全部内容(定制小程序开发该帖不少于5页。

 定制小程序开发本次选取的是百度贴吧中的NBA定制小程序开发吧中的一篇帖子,定制小程序开发帖子标题是“定制小程序开发克莱和哈登,定制小程序开发谁历史地位更高”。定制小程序开发爬取的目标是帖子里面的回复内容。

源程序和关键结果截图:

  1. import csv
  2. import requests
  3. import re
  4. import time
  5. def main(page):
  6. url = f'https://tieba.baidu.com/p/7882177660?pn={page}'
  7. headers = {
  8. 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36'
  9. }
  10. resp = requests.get(url,headers=headers)
  11. html = resp.text
  12. # 评论内容
  13. comments = re.findall('style="display:;"> (.*?)</div>',html)
  14. # 评论用户
  15. users = re.findall('class="p_author_name j_user_card" href=".*?" target="_blank">(.*?)</a>',html)
  16. # 评论时间
  17. comment_times = re.findall('楼</span><span class="tail-info">(.*?)</span><div',html)
  18. for u,c,t in zip(users,comments,comment_times):
  19. # 筛选数据,过滤掉异常数据
  20. if 'img' in c or 'div' in c or len(u)>50:
  21. continue
  22. csvwriter.writerow((u,t,c))
  23. print(u,t,c)
  24. print(f'第{page}页爬取完毕')
  25. if __name__ == '__main__':
  26. with open('01.csv','a',encoding='utf-8')as f:
  27. csvwriter = csv.writer(f)
  28. csvwriter.writerow(('评论用户','评论时间','评论内容'))
  29. for page in range(1,8): # 爬取前7页的内容
  30. main(page)
  31. time.sleep(2)

2.实现多线程爬虫爬取某小说部分章节内容并以数据库存储(不少于10个章节。 

 本次选取的小说网址是全本小说网https://www.qb5.tw/,这里我们选取第一篇小说进行爬取

然后通过分析网页源代码分析每章小说的链接

找到链接的位置后,我们使用Xpath来进行链接和每一章标题的提取

在这里,因为涉及到多次使用requests发送请求,所以这里我们把它封装成一个函数,便于后面的使用

每一章的链接获取后,我们开始进入小说章节内容页面进行分析

通过网页分析,小说内容都在网页源代码中,属于静态数据

这里我们选用re正则表达式进行数据提取,并对最后的结果进行清洗

然后我们需要将数据保存到数据库中,这里我将爬取的数据存储到mysql数据库中,先封住一下数据库的操作

接着将爬取到是数据进行保存

最后一步就是使用多线程来提高爬虫效率,这里我们创建了5个线程的线程池

 源代码及结果截图:

  1. import requests
  2. from lxml import etree
  3. import re
  4. import pymysql
  5. from time import sleep
  6. from concurrent.futures import ThreadPoolExecutor
  7. def get_conn():
  8. # 创建连接
  9. conn = pymysql.connect(host="127.0.0.1",
  10. user="root",
  11. password="root",
  12. db="novels",
  13. charset="utf8")
  14. # 创建游标
  15. cursor = conn.cursor()
  16. return conn, cursor
  17. def close_conn(conn, cursor):
  18. cursor.close()
  19. conn.close()
  20. def get_xpath_resp(url):
  21. headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36'}
  22. resp = requests.get(url, headers=headers)
  23. tree = etree.HTML(resp.text) # 用etree解析html
  24. return tree,resp
  25. def get_chapters(url):
  26. tree,_ = get_xpath_resp(url)
  27. # 获取小说名字
  28. novel_name = tree.xpath('//*[@id="info"]/h1/text()')[0]
  29. # 获取小说数据节点
  30. dds = tree.xpath('/html/body/div[4]/dl/dd')
  31. title_list = []
  32. link_list = []
  33. for d in dds[:15]:
  34. title = d.xpath('./a/text()')[0] # 章节标题
  35. title_list.append(title)
  36. link = d.xpath('./a/@href')[0] # 章节链接
  37. chapter_url = url +link # 构造完整链接
  38. link_list.append(chapter_url)
  39. return title_list,link_list,novel_name
  40. def get_content(novel_name,title,url):
  41. try:
  42. cursor = None
  43. conn = None
  44. conn, cursor = get_conn()
  45. # 插入数据的sql
  46. sql = 'INSERT INTO novel(novel_name,chapter_name,content) VALUES(%s,%s,%s)'
  47. tree,resp = get_xpath_resp(url)
  48. # 获取内容
  49. content = re.findall('<div id="content">(.*?)</div>',resp.text)[0]
  50. # 对内容进行清洗
  51. content = content.replace('<br />','').replace('&nbsp;',' ').replace('全本小说网 www.qb5.tw,最快更新<a href="https://www.qb5.tw/book_116659/">宇宙职业选手</a>最新章节!<br><br>','')
  52. print(title,content)
  53. cursor.execute(sql,[novel_name,title,content]) # 插入数据
  54. conn.commit() # 提交事务保存数据
  55. except:
  56. pass
  57. finally:
  58. sleep(2)
  59. close_conn(conn, cursor) # 关闭数据库
  60. if __name__ == '__main__':
  61. # 获取小说名字,标题链接,章节名称
  62. title_list, link_list, novel_name = get_chapters('https://www.qb5.tw/book_116659/')
  63. with ThreadPoolExecutor(5) as t: # 创建5个线程
  64. for title,link in zip(title_list,link_list):
  65. t.submit(get_content, novel_name,title,link) # 启动线程

 3. 分别使用XPath和Beautiful Soup4两种方式爬取并保存非异步加载的“豆瓣某排行榜”如https://movie.douban.com/top250的名称、描述、评分和评价人数等数据。

 先分析:

首先,来到豆瓣Top250页面,首先使用Xpath版本的来抓取数据,先分析下电影列表页的数据结构,发下都在网页源代码中,属于静态数据

接着我们找到数据的规律,使用xpath提取每一个电影的链接及电影名

然后根据链接进入到其详情页

分析详情页的数据,发现也是静态数据,继续使用xpath提取数据

最后我们将爬取的数据进行存储,这里用csv文件进行存储

接着是Beautiful Soup4版的,在这里,我们直接在电影列表页使用bs4中的etree进行数据提取

最后,同样使用csv文件进行数据存储

源代码即结果截图:

XPath版:

  1. import re
  2. from time import sleep
  3. import requests
  4. from lxml import etree
  5. import random
  6. import csv
  7. def main(page,f):
  8. url = f'https://movie.douban.com/top250?start={page*25}&filter='
  9. headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.35 Safari/537.36',}
  10. resp = requests.get(url,headers=headers)
  11. tree = etree.HTML(resp.text)
  12. # 获取详情页的链接列表
  13. href_list = tree.xpath('//*[@id="content"]/div/div[1]/ol/li/div/div[1]/a/@href')
  14. # 获取电影名称列表
  15. name_list = tree.xpath('//*[@id="content"]/div/div[1]/ol/li/div/div[2]/div[1]/a/span[1]/text()')
  16. for url,name in zip(href_list,name_list):
  17. f.flush() # 刷新文件
  18. try:
  19. get_info(url,name) # 获取详情页的信息
  20. except:
  21. pass
  22. sleep(1 + random.random()) # 休息
  23. print(f'第{i+1}页爬取完毕')
  24. def get_info(url,name):
  25. headers = {
  26. 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.35 Safari/537.36',
  27. 'Host': 'movie.douban.com',
  28. }
  29. resp = requests.get(url,headers=headers)
  30. html = resp.text
  31. tree = etree.HTML(html)
  32. # 导演
  33. dir = tree.xpath('//*[@id="info"]/span[1]/span[2]/a/text()')[0]
  34. # 电影类型
  35. type_ = re.findall(r'property="v:genre">(.*?)</span>',html)
  36. type_ = '/'.join(type_)
  37. # 国家
  38. country = re.findall(r'地区:</span> (.*?)<br',html)[0]
  39. # 上映时间
  40. time = tree.xpath('//*[@id="content"]/h1/span[2]/text()')[0]
  41. time = time[1:5]
  42. # 评分
  43. rate = tree.xpath('//*[@id="interest_sectl"]/div[1]/div[2]/strong/text()')[0]
  44. # 评论人数
  45. people = tree.xpath('//*[@id="interest_sectl"]/div[1]/div[2]/div/div[2]/a/span/text()')[0]
  46. print(name,dir,type_,country,time,rate,people) # 打印结果
  47. csvwriter.writerow((name,dir,type_,country,time,rate,people)) # 保存到文件中
  48. if __name__ == '__main__':
  49. # 创建文件用于保存数据
  50. with open('03-movie-xpath.csv','a',encoding='utf-8',newline='')as f:
  51. csvwriter = csv.writer(f)
  52. # 写入表头标题
  53. csvwriter.writerow(('电影名称','导演','电影类型','国家','上映年份','评分','评论人数'))
  54. for i in range(10): # 爬取10页
  55. main(i,f) # 调用主函数
  56. sleep(3 + random.random())

Beautiful Soup4版: 

  1. import random
  2. import urllib.request
  3. from bs4 import BeautifulSoup
  4. import codecs
  5. from time import sleep
  6. def main(url, headers):
  7. # 发送请求
  8. page = urllib.request.Request(url, headers=headers)
  9. page = urllib.request.urlopen(page)
  10. contents = page.read()
  11. # 用BeautifulSoup解析网页
  12. soup = BeautifulSoup(contents, "html.parser")
  13. infofile.write("")
  14. print('爬取豆瓣电影250: ')
  15. for tag in soup.find_all(attrs={"class": "item"}):
  16. # 爬取序号
  17. num = tag.find('em').get_text()
  18. print(num)
  19. infofile.write(num + "\r\")
  20. # 电影名称
  21. name = tag.find_all(attrs={"class": "title"})
  22. zwname = name[0].get_text()
  23. print('[中文名称]', zwname)
  24. infofile.write("[中文名称]" + zwname + "\r\")
  25. # 网页链接
  26. url_movie = tag.find(attrs={"class": "hd"}).a
  27. urls = url_movie.attrs['href']
  28. print('[网页链接]', urls)
  29. infofile.write("[网页链接]" + urls + "\r\")
  30. # 爬取评分和评论数
  31. info = tag.find(attrs={"class": "star"}).get_text()
  32. info = info.replace('', ' ')
  33. info = info.lstrip()
  34. print('[评分评论]', info)
  35. # 获取评语
  36. info = tag.find(attrs={"class": "inq"})
  37. if (info): # 避免没有影评调用get_text()报错
  38. content = info.get_text()
  39. print('[影评]', content)
  40. infofile.write(u"[影评]" + content + "\r\")
  41. print('')
  42. if __name__ == '__main__':
  43. # 存储文件
  44. infofile = codecs.open("03-movie-bs4.txt", 'a', 'utf-8')
  45. # 消息头
  46. headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'}
  47. # 翻页
  48. i = 0
  49. while i < 10:
  50. print('页码', (i + 1))
  51. num = i * 25 # 每次显示25部 URL序号按25增加
  52. url = 'https://movie.douban.com/top250?start=' + str(num) + '&filter='
  53. main(url, headers)
  54. sleep(5 + random.random())
  55. infofile.write("\r\ \")
  56. i = i + 1
  57. infofile.close()

 

 4.实现某东商城某商品评论数据的爬取(评论数据不少于100条,包括评论内容、时间和评分)。

 先分析:

 本次选取的某东官网的一款联想笔记本电脑,数据为动态加载的,通过开发者工具抓包分析即可。

源代码及结果截图:

  1. import requests
  2. import csv
  3. from time import sleep
  4. import random
  5. def main(page,f):
  6. url = 'https://club.jd.com/comment/productPageComments.action'
  7. params = {
  8. 'productId': 100011483893,
  9. 'score': 0,
  10. 'sortType': 5,
  11. 'page': page,
  12. 'pageSize': 10,
  13. 'isShadowSku': 0,
  14. 'fold': 1
  15. }
  16. headers = {
  17. 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.35 Safari/537.36',
  18. 'referer': 'https://item.jd.com/'
  19. }
  20. resp = requests.get(url,params=params,headers=headers).json()
  21. comments = resp['comments']
  22. for comment in comments:
  23. content = comment['content']
  24. content = content.replace('','')
  25. comment_time = comment['creationTime']
  26. score = comment['score']
  27. print(score,comment_time,content)
  28. csvwriter.writerow((score,comment_time,content))
  29. print(f'第{page+1}页爬取完毕')
  30. if __name__ == '__main__':
  31. with open('04.csv','a',encoding='utf-8',newline='')as f:
  32. csvwriter = csv.writer(f)
  33. csvwriter.writerow(('评分','评论时间','评论内容'))
  34. for page in range(15):
  35. main(page,f)
  36. sleep(5+random.random())

5. 实现多种方法模拟登录知乎,并爬取与一个与江汉大学有关问题和答案。

首先使用打开知乎登录页面,接着使用手机进行二维码扫描登录

进入页面后,打开开发者工具,找到元素,,定位输入框,输入汉江大学,然后点击搜索按钮

 

以第二条帖子为例,进行元素分析 。

源代码及结果截图:

  1. from time import sleep
  2. from selenium.webdriver.chrome.service import Service
  3. from selenium.webdriver import Chrome,ChromeOptions
  4. from selenium.webdriver.common.by import By
  5. import warnings
  6. def main():
  7. #忽略警告
  8. warnings.filterwarnings("ignore")
  9. # 创建一个驱动
  10. service = Service('chromedriver.exe')
  11. options = ChromeOptions()
  12. # 伪造浏览器
  13. options.add_experimental_option('excludeSwitches', ['enable-automation','enable-logging'])
  14. options.add_experimental_option('useAutomationExtension', False)
  15. # 创建一个浏览器
  16. driver = Chrome(service=service,options=options)
  17. # 绕过检测
  18. driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
  19. "source": """
  20. Object.defineProperty(navigator, 'webdriver', {
  21. get: () => false
  22. })
  23. """
  24. })
  25. # 打开知乎登录页面
  26. driver.get('https://www.zhihu.com/')
  27. sleep(30)
  28. # 点击搜索框
  29. driver.find_element(By.ID,'Popover1-toggle').click()
  30. # 输入内容
  31. driver.find_element(By.ID,'Popover1-toggle').send_keys('汉江大学')
  32. sleep(2)
  33. # 点击搜索图标
  34. driver.find_element(By.XPATH,'//*[@id="root"]/div/div[2]/header/div[2]/div[1]/div/form/div/div/label/button').click()
  35. # 等待页面加载完
  36. driver.implicitly_wait(20)
  37. # 获取标题
  38. title = driver.find_element(By.XPATH,'//*[@id="SearchMain"]/div/div/div/div/div[2]/div/div/div/h2/div/a/span').text
  39. # 点击阅读全文
  40. driver.find_element(By.XPATH,'//*[@id="SearchMain"]/div/div/div/div/div[2]/div/div/div/div/span/div/button').click()
  41. sleep(2)
  42. # 获取帖子内容
  43. content = driver.find_element(By.XPATH,'//*[@id="SearchMain"]/div/div/div/div/div[2]/div/div/div/div/span[1]/div/span/p').text
  44. # 点击评论
  45. driver.find_element(By.XPATH,'//*[@id="SearchMain"]/div/div/div/div/div[2]/div/div/div/div/div[3]/div/div/button[1]').click()
  46. sleep(2)
  47. # 点击获取更多评论
  48. driver.find_element(By.XPATH,'//*[@id="SearchMain"]/div/div/div/div/div[2]/div/div/div/div[2]/div/div/div[2]/div[2]/div/div[3]/button').click()
  49. sleep(2)
  50. # 获取评论数据的节点
  51. divs = driver.find_elements(By.XPATH,'/html/body/div[6]/div/div/div[2]/div/div/div/div[2]/div[3]/div')
  52. try:
  53. for div in divs:
  54. # 评论内容
  55. comment = div.find_element(By.XPATH,'./div/div/div[2]').text
  56. f.write(comment) # 写入文件
  57. f.write('')
  58. print(comment)
  59. except:
  60. driver.close()
  61. if __name__ == '__main__':
  62. # 创建文件存储数据
  63. with open('05.txt','a',encoding='utf-8')as f:
  64. main()

 6. 综合利用所学知识,爬取某个某博用户前5页的微博内容。

这里我们选取了人民日报的微博内容进行爬取,具体页面我就不放这了,怕违规。

源代码及结果截图:

  1. import requests
  2. import csv
  3. from time import sleep
  4. import random
  5. def main(page):
  6. url = f'https://weibo.com/ajax/statuses/mymblog?uid=2803301701&page={page}&feature=0&since_id=4824543023860882kp{page}'
  7. headers = {
  8. 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36',
  9. 'cookie':'SINAGLOBAL=6330339198688.262.1661412257300; ULV=1661412257303:1:1:1:6330339198688.262.1661412257300:; PC_TOKEN=8b935a3a6e; SUBP=0033WrSXqPxfM725Ws9jqgMF55529P9D9WWoQDW1G.Vsux_WIbm9NsCq5JpX5KMhUgL.FoMNShMN1K5ESKq2dJLoIpjLxKnL1h.LB.-LxKqLBoBLB.-LxKqLBKeLB--t; ALF=1697345086; SSOLoginState=1665809086; SCF=Auy-TaGDNaCT06C4RU3M3kQ0-QgmTXuo9D79pM7HVAjce1K3W92R1-fHAP3gXR6orrHK_FSwDsodoGTj7nX_1Hw.; SUB=_2A25OTkruDeRhGeFJ71UW-S7OzjqIHXVtOjsmrDV8PUNbmtANLVKmkW9Nf9yGtaKedmyOsDKGh84ivtfHMGwvRNtZ; XSRF-TOKEN=LK4bhZJ7sEohF6dtSwhZnTS4; WBPSESS=PfYjpkhjwcpEXrS7xtxJwmpyQoHWuGAMhQkKHvr_seQNjwPPx0HJgSgqWTZiNRgDxypgeqzSMsbVyaDvo7ng6uTdC9Brt07zYoh6wXXhQjMtzAXot-tZzLRlW_69Am82CXWOFfcvM4AzsWlAI-6ZNA=='
  10. }
  11. resp = requests.get(url,headers=headers)
  12. data_list = resp.json()['data']['list']
  13. for item in data_list:
  14. created_time = item['created_at'] # 发布时间
  15. author = item['user']['screen_name'] # 作者
  16. title = item['text_raw'] # 帖子标题
  17. reposts_count = item['reposts_count'] # 转发数
  18. comments_count = item['comments_count'] # 评论数
  19. attitudes_count = item['attitudes_count'] # 点赞数
  20. csvwriter.writerow((created_time,author,title,reposts_count,comments_count,attitudes_count))
  21. print(created_time,author,title,reposts_count,comments_count,attitudes_count)
  22. print(f'第{page}页爬取完毕')
  23. if __name__ == '__main__':
  24. # 创建保存数据的csv文件
  25. with open('06-2.csv','a',encoding='utf-8',newline='')as f:
  26. csvwriter = csv.writer(f)
  27. # 添加文件表头
  28. csvwriter.writerow(('发布时间','发布作者','帖子标题','转发数','评论数','点赞数'))
  29. for page in range(1,6): # 爬取前5页数据
  30. main(page)
  31. sleep(5+random.random())

 7.自选一个热点或者你感兴趣的主题,爬取数据并进行简要数据分析(例如,通过爬取电影的名称、类型、总票房等数据统计分析不同类型电影的平均票房,十年间每年票房冠军的票房走势等;通过爬取中国各省份地区人口数量,统计分析我国人口分布等)。

本次选取的网址是艺恩娱数,目标是爬取里面的票房榜数据,通过开发者工具抓包分析找到数据接口,然后开始编写代码进行数据抓取。 

源代码及结果截图:

  1. import requests
  2. import csv
  3. import pandas as pd
  4. import matplotlib.pyplot as plt
  5. import warnings
  6. warnings.filterwarnings('ignore')
  7. plt.rcParams['font.sans-serif'] = ['SimHei'] #解决中文显示
  8. plt.rcParams['axes.unicode_minus'] = False #解决符号无法显示
  9. def main():
  10. headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36',}
  11. data = {
  12. 'r': '0.9936776079863086',
  13. 'top': '50',
  14. 'type': '0',
  15. }
  16. resp = requests.post('https://ys.endata.cn/enlib-api/api/home/getrank_mainland.do', headers=headers, data=data)
  17. data_list = resp.json()['data']['table0']
  18. for item in data_list:
  19. rank = item['Irank'] # 排名
  20. MovieName = item['MovieName'] # 电影名称
  21. ReleaseTime = item['ReleaseTime'] # 上映时间
  22. TotalPrice = item['BoxOffice'] # 总票房(万)
  23. AvgPrice = item['AvgBoxOffice'] # 平均票价
  24. AvgAudienceCount = item['AvgAudienceCount'] # 平均场次
  25. # 写入csv文件
  26. csvwriter.writerow((rank,MovieName,ReleaseTime,TotalPrice,AvgPrice,AvgAudienceCount))
  27. print(rank,MovieName,ReleaseTime,TotalPrice,AvgPrice,AvgAudienceCount)
  28. def data_analyze():
  29. # 读取数据
  30. data = pd.read_csv('07.csv')
  31. # 从上映时间中提取出年份
  32. data['年份'] = data['上映时间'].apply(lambda x: x.split('-')[0])
  33. # 各年度上榜电影总票房占比
  34. df1 = data.groupby('年份')['总票房(万)'].sum()
  35. plt.figure(figsize=(6, 6))
  36. plt.pie(df1, labels=df1.index.to_list(), autopct='%1.2f%%')
  37. plt.title('各年度上榜电影总票房占比')
  38. plt.show()
  39. # 各个年份总票房趋势
  40. df1 = data.groupby('年份')['总票房(万)'].sum()
  41. plt.figure(figsize=(6, 6))
  42. plt.plot(df1.index.to_list(), df1.values.tolist())
  43. plt.title('各年度上榜电影总票房趋势')
  44. plt.show()
  45. # 平均票价最贵的前十名电影
  46. print(data.sort_values(by='平均票价', ascending=False)[['年份', '电影名称', '平均票价']].head(10))
  47. # 平均场次最高的前十名电影
  48. print(data.sort_values(by='平均场次', ascending=False)[['年份', '电影名称', '平均场次']].head(10))
  49. if __name__ == '__main__':
  50. # 创建保存数据的csv文件
  51. with open('07.csv', 'w', encoding='utf-8',newline='') as f:
  52. csvwriter = csv.writer(f)
  53. # 添加文件表头
  54. csvwriter.writerow(('排名', '电影名称', '上映时间', '总票房(万)', '平均票价', '平均场次'))
  55. main()
  56. # 数据分析
  57. data_analyze()

 

 从年度上榜电影票房占比来看,2019年占比最高,说明2019年这一年的电影质量都很不错,上榜电影多而且票房高。

从趋势来看,从2016年到2019年,上榜电影总票房一直在增长,到2019年达到顶峰,说明这一年电影是非常的火爆,但是从2020年急剧下滑,最大的原因应该是这一年年初开始爆发疫情,导致贺岁档未初期上映,而且由于疫情影响,电影院一直处于关闭状态,所以这一年票房惨淡。

        好了,本次案例分享到此结束,希望对刚入手爬虫的小伙伴有所帮助。 

网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发