instagram-scraper - Instagramユーザーの写真やビデオをスクレイプします

(Scrapes an instagram user's photos and videos)

Created at: 2013-04-09 11:12:09
Language: Python
License: Unlicense

Instagramスクレーパー

PyPI ビルドステータス PyPI-実装 PyPI-ホイール ビールを買って

instagram-scraperは、Pythonで記述されたコマンドラインアプリケーションで、Instagramユーザーの写真やビデオをスクレイプしてダウンロードします。責任を持って使用してください。

インストール

Instagram-scraperをインストールするには:

$ pip install instagram-scraper

Instagram-scraperを更新するには:

$ pip install instagram-scraper --upgrade

または、プロジェクトのクローンを作成し、次のコマンドを実行してインストールすることもできます。以下のコマンドを実行する前に、必ずinstagram-scraper-masterフォルダーにcdしてください。

$ python setup.py install

使用法

ユーザーのメディアをスクレイピングするには:

$ instagram-scraper <username> -u <your username> -p <your password>             

注:プライベートユーザーのメディアをスクレイピングするには、承認されたフォロワーである必要があります。

デフォルトでは、ダウンロードされたメディアはに配置され

<current working directory>/<username>
ます。

ユーザー名とパスワードの提供はオプションです。提供されない場合、スクレーパーはゲストとして実行されます。 注:この場合、すべてのプライベートユーザーのメディアは利用できなくなります。すべてのユーザーのストーリーと高解像度のプロフィール写真も利用できなくなります。

メディアのハッシュタグをスクレイピングするには:

$ instagram-scraper <hashtag without #> --tag          

--maximum <#>
ハッシュタグでスクレイピングするときにスクレイピングするアイテムの総数を制限する引数を指定すると便利な場合があります。

複数のユーザーを指定するには、ユーザーの区切りリストを渡します。

$ instagram-scraper username1,username2,username3           

ユーザー名のリストを含むファイルを提供することもできます。

$ instagram-scraper -f ig_users.txt           
# ig_users.txt

username1
username2
username3

# and so on...

ユーザー名は、改行、コンマ、セミコロン、または空白で区切ることができます。

ロケーションIDのリストを含むファイルを提供することもできます。

$ instagram-scraper --tag <your_tag_here> --include-location --filter_location_file my_locations.txt           
# my_locations.txt
[some_reagion1]
location_id1
location_id2

[some_region2]
location_id3
location_id4

# and so on...

結果のディレクトリ構造は次のようになります。

your_tag
├── some_reagion1
│   └── images_here
└── some_reagion2
    └── images_here

場所は、改行とスペースでのみ区切ることができます。

オプション

--help -h               Show help message and exit.

--login-user  -u        Instagram login user.

--login-pass  -p        Instagram login password.

--followings-input      Use profiles followed by login-user as input

--followings-output     Output profiles from --followings-input to file

--filename    -f        Path to a file containing a list of users to scrape.

--destination -d        Specify the download destination. By default, media will 
                        be downloaded to <current working directory>/<username>.

--retain-username -n    Creates a username subdirectory when the destination flag is
                        set.

--media-types -t        Specify media types to scrape. Enter as space separated values. 
                        Valid values are image, video, story (story-image & story-video), broadcast
                        or none. Stories require a --login-user and --login-pass to be defined.
                      
--latest                Scrape only new media since the last scrape. Uses the last modified
                        time of the latest media item in the destination directory to compare.

--latest-stamps         Specify a file to save the timestamps of latest media scraped by user.
                        This works similarly to `--latest` except the file specified by
                        `--latest-stamps` will store the last modified time instead of using 
                        timestamps of media items in the destination directory. 
                        This allows the destination directories to be emptied whilst 
                        still maintaining history.

--cookiejar             File in which to store cookies so that they can be reused between runs.

--quiet       -q        Be quiet while scraping.

--maximum     -m        Maximum number of items to scrape.

--media-metadata        Saves the media metadata associated with the user's posts to 
                        <destination>/<username>.json. Can be combined with --media-types none
                        to only fetch the metadata without downloading the media.

--include-location      Includes location metadata when saving media metadata. 
                        Implicitly includes --media-metadata.

--profile-metadata      Saves the user profile metadata to  <destination>/<username>.json.

--proxies               Enable use of proxies, add a valid JSON with http or/and https urls.
                        Example: '{"http": "http://<ip>:<port>", "https": "https://<ip>:<port>" }'

--comments             Saves the comment metadata associated with the posts to 
                       <destination>/<username>.json. Implicitly includes --media-metadata.
                    
--interactive -i       Enables interactive login challenge solving. Has 2 modes: SMS and Email

--retry-forever        Retry download attempts endlessly when errors are received

--tag                   Scrapes the specified hashtag for media.

--filter                Scrapes the specified hashtag within a user's media.

--filter_location       Filter scrape queries by command line location(s) ids

--filter_location_file  Provide location ids by file to filter queries 

--location              Scrapes the specified instagram location-id for media.

--search-location       Search for a location by name. Useful for determining the location-id of 
                        a specific place.
                    
--template -T           Customize and format each file's name.
                        Default: {urlname}
                        Options:
                        {username}: Scraped user
                        {shortcode}: Post shortcode (profile_pic and story are empty)
                        {urlname}: Original file name from url.
                        {mediatype}: The type of media being downloaded.
                        {datetime}: Date and time of upload. (Format: 20180101 01h01m01s)
                        {date}: Date of upload. (Format: 20180101)
                        {year}: Year of upload. (Format: 2018)
                        {month}: Month of upload. (Format: 01-12)
                        {day}: Day of upload. (Format: 01-31)
                        {h}: Hour of upload. (Format: 00-23h)
                        {m}: Minute of upload. (Format: 00-59m)
                        {s}: Second of upload. (Format: 00-59s)

                        If the template is invalid, it will revert to the default.
                        Does not work with --tag and --location.

ライブラリとしての使用

from pprint import pprint
import instagram_scraper

args = {"login_user": "LOGIN", "login_pass": "PASSWORD"}

insta_scraper = instagram_scraper.InstagramScraper(**args)
insta_scraper.authenticate_with_login()
shared_data = insta_scraper.get_shared_data_userinfo(username='SCRAPED_USERNAME')

arr = []

for item in insta_scraper.query_media_gen(shared_data):
    arr.append(item)

pprint(arr)

Docker

Dockerをインストールするには、https: //docs.docker.com/engine/install/を参照してください。

Linuxhttps: //docs.docker.com/engine/install/linux-postinstall/のインストール後の手順を実行することを忘れないでください

建てる

$ docker build -t instagram-scraper .

走る

$ docker run -it --rm -v $(pwd)/data:/instagram-scraper/data instagram-scraper -i -d data/<folder_name> <params>

HDDを保存したい場合

cookiejar
は、次のように実行する必要があります。

$ docker run -it --rm -v $(pwd)/data:/instagram-scraper/data instagram-scraper -i -d data/<folder_name> --cookiejar data/my_cookies <params>

ビルドされたイメージを実行する

ここからすでにビルドされたイメージを実行できますhttps://github.com/arc298/instagram-scraper/pkgs/container/instagram-scraper/versions

$ docker run -it --rm -v $(pwd)/data:/instagram-scraper/data ghcr.io/arc298/instagram-scraper:latest -i -d data/<folder_name> --cookiejar data/my_cookies <params>

発展させる

リポジトリのクローンを作成し、virtualenvを作成します

$ virtualenv venv
$ source venv/bin/activate
$ python setup.py develop

テストの実行

$ python setup.py test

# or just 

$ nosetests

貢献

  1. 未解決の問題を確認するか、新しい問題を開いて、機能のアイデアや見つけたバグに関するディスカッションを開始します
  2. リポジトリをフォークし、変更を加えて、 AUTHORS.mdに自分を追加します
  3. プルリクエストを送信する

ライセンス

これは、パブリックドメインにリリースされた無料の邪魔にならないソフトウェアです。

このソフトウェアは、ソースコード形式またはコンパイル済みバイナリとして、商用または非商用を問わず、あらゆる手段で、誰でも自由にコピー、変更、公開、使用、コンパイル、販売、または配布できます。

著作権法を認める法域では、このソフトウェアの作成者は、ソフトウェアのすべての著作権の利益をパブリックドメインに捧げます。私たちは、一般の人々の利益のために、そして私たちの相続人と後継者の不利益のために、この献身をします。私たちは、この献身が、著作権法に基づくこのソフトウェアに対する現在および将来のすべての権利を永続的に放棄する明白な行為であることを意図しています。

本ソフトウェアは「現状有姿」で提供され、商品性、特定目的への適合性、および非侵害の保証を含むがこれらに限定されない、明示または黙示を問わず、いかなる種類の保証もありません。いかなる場合も、作者は、本ソフトウェアまたは本ソフトウェアの使用またはその他の取引に起因、起因、または関連する契約、不法行為、またはその他の行為にかかわらず、いかなる請求、損害、またはその他の責任についても責任を負わないものとします。

寄付

ビールを買って