このタスクを達成するには、ウェブスクレイピング技術を使ってIMDBのウェブサイトとGoogleの検索結果から情報を抽出する必要があります。以下は、このPythonプログラムを書くためにあなたが取ることができるステップの一般的な概要です：

1.ウェブスクレイピングに必要なライブラリ（requests、beautifulsoup4、lxml）をインポートする。
requestsライブラリを使用して、IMDBウェブサイトの "Top Rated Movies "ページのHTMLコードを取得する。
2.beautifulsoup4を使ってHTMLコードを解析し、映画のタイトルとIMDb IDを抽出する。
3.IMDb IDを使って映画のページにアクセスし、各映画のメタデータ（年、プロデューサー、監督、脚本家、俳優など）を抽出する。
4.上位200作品の映画のメタデータを含む辞書のリストを作成する。
5.5.各映画について、googlesearch-pythonライブラリを使用して、映画評論家による～100件のレビューを検索する。
6.requestライブラリを使用して、各レビューページのHTMLコードを取得する。
7.beautifulsoup4を使ってHTMLコードを解析し、レビューテキストとそのメタデータを抽出する。
8.レビューテキストとメタデータを、レビューごとに個別のファイルに保存する。

以下はサンプルコードです：


```python:

import requests
from bs4 import BeautifulSoup
from googlesearch import search

# Step 1: Get the HTML code for the IMDB website's "Top Rated Movies" page
url = "https://www.imdb.com/chart/top"
response = requests.get(url)
html_code = response.text

# Step 2: Parse the HTML code and extract the movie titles and their IMDb IDs
soup = BeautifulSoup(html_code, "lxml")
movie_list = soup.find("tbody", {"class": "lister-list"}).find_all("tr")
movies = []
for movie in movie_list[:200]:
    title = movie.find("td", {"class": "titleColumn"}).find("a").text
    imdb_id = movie.find("td", {"class": "titleColumn"}).find("a")["href"].split("/")[-2]
    movies.append({"title": title, "imdb_id": imdb_id})

# Step 3: Use the IMDb IDs to access the movie pages and extract the metadata for each movie
for movie in movies:
    imdb_url = f"https://www.imdb.com/title/{movie['imdb_id']}"
    response = requests.get(imdb_url)
    html_code = response.text
    soup = BeautifulSoup(html_code, "lxml")
    # extract metadata here and add it to the movie dictionary

# Step 4: Create a list of dictionaries that contains the movie metadata for each of the top 200 movies
movies_metadata = []

# Step 5: For each movie, use googlesearch-python library to search for ~100 reviews by film critics
for movie in movies:
    query = f"{movie['title']} reviews"
    for review_url in search(query, num_results=100):
        response = requests.get(review_url)
        html_code = response.text
        soup = BeautifulSoup(html_code, "lxml")
        # Step 6-8: extract review text and its metadata and store it in a separate file for each review

```


注：pipを使ってgooglesearch-pythonとlxmlライブラリをインストールする必要があります。また、ルールに違反しないよう、IMDBとGoogleの利用規約に従ってください。
To accomplish this task, you will need to use web scraping techniques to extract information from the IMDB website and Google search results. Here's a general outline of the steps you can take to write this Python program:

1. Import the necessary libraries for web scraping: requests, beautifulsoup4, and lxml.
Use the requests library to get the HTML code for the IMDB website's "Top Rated Movies" page.
2. Use beautifulsoup4 to parse the HTML code and extract the movie titles and their IMDb IDs.
3. Use the IMDb IDs to access the movie pages and extract the metadata for each movie (year, producers, director, screenwriter, actors, etc.).
4. Create a list of dictionaries that contains the movie metadata for each of the top 200 movies.
5. For each movie, use googlesearch-python library to search for ~100 reviews by film critics.
6. Use requests library to get the HTML code for each review page.
7. Use beautifulsoup4 to parse the HTML code and extract the review text and its metadata.
8. Store the review text and its metadata in a separate file for each review.

Here's some sample code to get you started:


```python:

import requests
from bs4 import BeautifulSoup
from googlesearch import search

# Step 1: Get the HTML code for the IMDB website's "Top Rated Movies" page
url = "https://www.imdb.com/chart/top"
response = requests.get(url)
html_code = response.text

# Step 2: Parse the HTML code and extract the movie titles and their IMDb IDs
soup = BeautifulSoup(html_code, "lxml")
movie_list = soup.find("tbody", {"class": "lister-list"}).find_all("tr")
movies = []
for movie in movie_list[:200]:
    title = movie.find("td", {"class": "titleColumn"}).find("a").text
    imdb_id = movie.find("td", {"class": "titleColumn"}).find("a")["href"].split("/")[-2]
    movies.append({"title": title, "imdb_id": imdb_id})

# Step 3: Use the IMDb IDs to access the movie pages and extract the metadata for each movie
for movie in movies:
    imdb_url = f"https://www.imdb.com/title/{movie['imdb_id']}"
    response = requests.get(imdb_url)
    html_code = response.text
    soup = BeautifulSoup(html_code, "lxml")
    # extract metadata here and add it to the movie dictionary

# Step 4: Create a list of dictionaries that contains the movie metadata for each of the top 200 movies
movies_metadata = []

# Step 5: For each movie, use googlesearch-python library to search for ~100 reviews by film critics
for movie in movies:
    query = f"{movie['title']} reviews"
    for review_url in search(query, num_results=100):
        response = requests.get(review_url)
        html_code = response.text
        soup = BeautifulSoup(html_code, "lxml")
        # Step 6-8: extract review text and its metadata and store it in a separate file for each review

```


Note: You will need to install the googlesearch-python and lxml library using pip. Also, make sure to follow the terms of service for both IMDB and Google to avoid violating any rules.