42 lines
1.4 KiB
Python
42 lines
1.4 KiB
Python
import requests
|
|
from bs4 import BeautifulSoup as bs
|
|
import json
|
|
header={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0'}
|
|
url="https://exam.detr.top/exam-b/movies"
|
|
resp=requests.get(url,headers=header).text
|
|
resp.encoding="utf-8"
|
|
#print(resp.text)
|
|
soup=bs(resp.text,"html.parser")
|
|
#print(soup)
|
|
items= soup.find_all("tbody")
|
|
#print(items)
|
|
with open("movies.html", "w", encoding="utf-8") as f:
|
|
f.write(resp.text)
|
|
data=[]
|
|
for item in items:
|
|
trs=item.find_all("tr")
|
|
#print(trs)
|
|
for tr in trs:
|
|
tds=tr.find_all("td")
|
|
#print(tds)
|
|
id=int(tds[0].get_text(strip=True))
|
|
title = tds[1].get_text(strip=True)
|
|
director = tds[2].get_text(strip=True)
|
|
year = int(tds[3].get_text(strip=True))
|
|
rating = float(tds[4].get_text(strip=True))
|
|
duration = int(tds[5].get_text(strip=True))
|
|
genre = tds[6].get_text(strip=True)
|
|
actors_count = int(tds[7].get_text(strip=True))
|
|
data.append ({
|
|
"id": id,
|
|
"title": title,
|
|
"director": director,
|
|
"year": year,
|
|
"rating": rating,
|
|
"duration": duration,
|
|
"genre": genre,
|
|
"actors_count": actors_count
|
|
})
|
|
print(data)
|
|
with open("movies.json","w",encoding="utf-8") as f:
|
|
json.dump(data,f,ensure_ascii=False,indent=4) |