친가의 PC 이력 붙이지 않고 몰래 AV 봐 보았다 |·`ω・)

15105 단어 파이썬스크래핑

소개



모두가 AV를보고 있습니까?
이번에는, 이런 사람을 향해 기사를 작성했습니다.

「자신의 스마트폰 가지고 있지 않다. 친가에 1대의 PC밖에 없기 때문에, AV이력 삭제 귀찮아」

「스크래핑 기억하고 싶지만, 의욕이 없어」

그런 고민을 해결합니다.
그럼 꿈의 세계로 가자.

HTML 얻기


#ライブラリ一覧
import requests #webページを取得するライブラリ
import pandas as pd
from bs4 import BeautifulSoup #取得したHTMLのデータの中から、タグを読み取り、操作できるライブラリ
from IPython.display import HTML
from IPython.display import Image
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, 利用するパーサー(解析器))
#HTMLをインデントできる
print(soup.prettify())



위와 같이 HTML을 얻을 수 있음을 알 수 있습니다.
여기에서 어떤 태그와 어떤 속성을 얻을지에 대한 정책을 세웁니다.
일근줄에서는 가지 않는 부분이 많이 있는 것이, 스크래핑이므로, 시행착오를 반복해 갑시다.

이미지 얻기 (images)


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リストに格納

다음과 같은 형태가 됩니다.



링크 가져 오기 (AV_links)


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'))


htps //w w. dm. 이. jp 가 빠져 있기 때문에 선두에 추가해 줍니다.



동영상 url (movie_links)


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

"/ajax-movie/=/"를 사이에 추가합니다.



작품명, 순위 획득(titles,ranks)


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)



배우 이름 얻기 (names)


names_contents=[]
tags1=soup.find_all("div",class_="data")

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



----라고 표시되고 있는 곳은 여배우명이 쓰지 않고, 복수인으로 출연하고 있었습니다.
names=[]

for i in names_contents:
    q=i.split("出演者:")
    if q[-1]=="----":
        names.append("複数人")
    else:
        names.append(q[-1])



Pake 사진 (real_images)


real_images=[]

for j,i in enumerate(images):
    real_images.append(Image(images[j]))



데이터 프레임 생성


columns={"順位":ranks,"女優名":names,"タイトル名":titles,"画像url":images,"AVurl":AV_links,"動画":movie_links,"パケ写":real_images}
df=pd.DataFrame(columns)



결과는! ?


HTML(df["AVurl"][0])


HTML(df["動画"][0])



상기와 같이 이력을 남기지 않고, 데이터 프레임으로부터 값을 취득하는 것만으로 AV감상을 할 수 있군요!
친가에 PC가 1대밖에 없는 사람은,
① jupyter의 환경을 정돈한다
②python 기억

이 2점을 학습하면, 이력의 지우는 것을 잊지 않기 때문에 안심하고 볼 수 있네요.

좋은 웹페이지 즐겨찾기