実家のPC　履歴つけずにこっそりAVみてみた|･`ω･)

#はじめに
みなさんAV観てますか？
今回は、こんな人に向けて記事を作成しました。


「自分のスマホ持ってない。実家に一台のPCしかないから、AV履歴削除めんどくさいなぁ」

「スクレイピング覚えたいけど、やる気がでないんだよなぁ」

そんな悩みを解決します。
では、**夢の世界へどうぞ**



#HTMLの取得
```py
#ライブラリ一覧
import requests #webページを取得するライブラリ
import pandas as pd
from bs4 import BeautifulSoup #取得したHTMLのデータの中から、タグを読み取り、操作できるライブラリ
from IPython.display import HTML
from IPython.display import Image
```

```py
url = "https://www.dmm.co.jp/digital/videoa/-/ranking/=/term=realtime/" #売れ筋作品ランキング(10分ごとに更新されます)
response = requests.get(url)
response.encoding = response.apparent_encoding #response.apparent_encoding に、正しい文字コードである SHIFT_JISが格納されている(文字化けを防げます)
soup = BeautifulSoup(response.text, "html.parser") #BeautifulSoup(解析対象のHTML/XML, 利用するパーサー(解析器))
```

```py
#HTMLをインデントできる
print(soup.prettify())
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449715/dd815e6a-d5d7-cd13-9777-7694546982b8.png)

上記の様にHTMLが取得できていることが分かります。
ここから、**どのタグ・どの属性**を取得するかの方針を立てます。
一筋縄ではいかない部分が多々あるのが、スクレイピングですので、試行錯誤を繰り返していきましょう。

#画像を取得(images)
```py
images=[]
for link in soup.find_all("img"): # imgタグを取得しlinkに格納
    if link.get("src").endswith(".jpg"): # imgタグ内の.jpgであるsrcタグを取得
        images.append(link.get("src")) # imagesリストに格納
```
以下のような形になります。

<img width="350" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449715/8ed0a745-26d8-9529-fcd2-f5f91f04a0e6.png" class="img" alt="フシギダネ">

#リンクを取得(AV_links)
```py
AV_links=[]
tags1=soup.find_all("td", attrs={"class": "bd-b"})
for j,i in enumerate(tags1):
    a=i.find("a")
    print(a.get('href'))
    AV_links.append("https://www.dmm.co.jp"+a.get('href'))
```
<img width="350" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449715/39b44522-8c96-2ea9-3dcd-83bd2260fa8b.png" class="img" alt="フシギダネ">
**https://www.dmm.co.jp**が抜けているので先頭に追加してあげます。

<img width="350" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449715/54c48cc3-62d9-667b-3484-cdd43939366e.png" class="img" alt="フシギダネ">

#動画url(movie_links)
```py
movie_links=[]
for i in AV_links:
    a=i.split("/=/")
    b=a[0]+'/ajax-movie/=/'+a[1]
    movie_links.append(b)
```

**"/ajax-movie/=/"**を間に追加します。

<img width="350" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449715/e38197e0-d64e-b691-4d6b-1fe51adadbd5.png" class="img" alt="フシギダネ">

#作品名,順位を取得(titles,ranks)
```py
import re
titles=[]
ranks=[]
tags2=soup.find_all("td", attrs={"class": "bd-b"})

for j,i in enumerate(tags2):
    ranks.append(j)
    tmp=i.find("p")
    tmp1=tmp.text

    a=re.sub("【[^】]+】","",tmp1)
    titles.append(a)
```
<img width="350" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449715/36a70a7b-179d-9eca-7b9d-b2e1a18770e1.png" class="img" alt="フシギダネ">

#女優名を取得(names)
```py
names_contents=[]
tags1=soup.find_all("div",class_="data")

for i in tags1:
    a=i.text
    names_contents.append(a)
```

<img width="350" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449715/195e0aa7-4da7-8f96-6275-521c537e91c9.png" class="img" alt="フシギダネ">


**----**と表示されているところは女優名が書いておらず、複数人で出演していました。

```py
names=[]

for i in names_contents:
    q=i.split("出演者：")
    if q[-1]=="----":
        names.append("複数人")
    else:
        names.append(q[-1])
```
<img width="200" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449715/3068e36b-81fb-2157-adae-5ed24d11ab03.png" class="img" alt="フシギダネ">

#パケ写(real_images)
```py
real_images=[]

for j,i in enumerate(images):
    real_images.append(Image(images[j]))
```
<img width="400" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449715/ad5a1126-f187-4f16-77c2-5ed9a8bee2f7.png" class="img" alt="フシギダネ">

#データフレーム作成
```py
columns={"順位":ranks,"女優名":names,"タイトル名":titles,"画像url":images,"AVurl":AV_links,"動画":movie_links,"パケ写":real_images}
df=pd.DataFrame(columns)
```
<img width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449715/fa2af985-4a5a-f3fc-2dd4-7c28150a8b1f.png" class="img" alt="フシギダネ">

#結果は！？
```py
HTML(df["AVurl"][0])
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449715/0a07fec5-e8af-68b5-594b-66cb0dcd69b9.png)


```py
HTML(df["動画"][0])
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449715/55fb07d1-5612-8001-2bb7-1bf91d414dc5.png)

上記の様に履歴を残さず、データフレームから値を取得するだけでAV鑑賞が出来ますね！
実家にPCが1台しかない人は、
**①jupyterの環境を整える**
**②python覚える**

この2点を学習すれば、履歴の消し忘れもないので安心して見れますね。