CrawlingStocksReports - GachonCapstoneTeam/TTS_JAVA GitHub Wiki
๐ Crawling Stock Report
Stock Report Crawling
๋ค์ด๋ฒ ๋ฆฌํฌํธ์์ ์ ๊ณตํ๋ ์ข
๋ชฉ๋ถ์ ๋ฆฌํฌํธ
์ ๋ํ ๋ด์ฉ์ ํฌ๋กค๋ง ํ ๊ฒ์ผ๋ก, ์ข
๋ชฉ๋ถ์ ๋ฆฌํฌํธ์ ํ๋ฉด ๊ตฌ์ฑ์ ๋ง์ถฐ์ ํฌ๋กค๋ง์ ์งํํ๊ธฐ ์ํ ์ฝ๋์
๋๋ค. BeautifulSoup
์ ์ฌ์ฉํ์ฌ ํฌ๋กค๋งํ์์ผ๋ฉฐ, ํฌ๋กค๋ง๋ ๋ฐ์ดํฐ๋ mongoDB
์ ์ ์ฅ๋ฉ๋๋ค.
โ ์ฃผ์ ๊ธฐ๋ฅ ์์ฝ
๊ธฐ๋ฅ | ์ค๋ช |
---|---|
์ข ๋ชฉ๋ถ์ ๋ฆฌํฌํธ ํฌ๋กค๋ง | ๋ค์ด๋ฒ ์ฆ๊ถ ์ข ๋ชฉ๋ถ์ ๋ฆฌํฌํธ์ ๋ฆฌ์คํธ ํ์ด์ง๋ฅผ ์ํํ๋ฉฐ ๋ณด๊ณ ์์ ์ ๋ชฉ, ์์ฝ, ๋ ์ง ๋ฑ์ ์์ง |
๋ณธ๋ฌธ ๋ด์ฉ ์์ง | ๊ฐ ๋ฆฌํฌํธ ์์ธ ํ์ด์ง๋ก ์ด๋ํ์ฌ ๋ณธ๋ฌธ ๋ด์ฉ์ ํ์ฑํ์ฌ ์์ง |
PDF ๋ด์ฉ ๋ณํฉ | PDF ๋ฆฌํฌํธ๊ฐ ์กด์ฌํ๋ ๊ฒฝ์ฐ ํด๋น PDF๋ฅผ ๋ค์ด๋ก๋ํ์ฌ ํ ์คํธ๋ก ๋ณํํ๊ณ ๋ณธ๋ฌธ ๋ด์ฉ๊ณผ ๋ณํฉ |
MongoDB์ ์ ์ฅ | ํฌ๋กค๋ง๋ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ MongoDB ์ปฌ๋ ์ ์ ์ ์ฅํ์ฌ ๋ถ์ ๋ฐ ์กฐํ์ ํ์ฉ ๊ฐ๋ฅ |
์ค๋ณต ์ ๊ฑฐ | DB์ ์ด๋ฏธ ์กด์ฌํ๋ ๋ฆฌํฌํธ๋ ์ ์ธํ๊ณ ์ ๊ท ๋ฐ์ดํฐ๋ง ์ฝ์ |
๐ง ์ฃผ์ ๋ก์ง ์ค๋ช
์ ์ฒด ๋ฆฌํฌํธ ํฌ๋กค๋ง ๋ฐ ์ ์ฅ - fetch_stock_reports()
def fetch_stock_reports(category_name, category_url, pages, industry_data)
- ์ข ๋ชฉ๋ถ์ ๋ฆฌํฌํธ๋ฅผ ์นดํ ๊ณ ๋ฆฌ๋ณ๋ก ์์งํ์ฌ ์ข ๋ชฉ๋ช , ์ฆ๊ถ์ฌ, ์ ์ข , ๋ณธ๋ฌธ ๋ด์ฉ ๋ฑ์ ํฌํจํ ๊ฒฐ๊ณผ๋ฅผ ๋ฆฌ์คํธ ํํ๋ก ๋ฐํ
for page in range(1, pages + 1):
url = f"{category_url}?&page={page}"
...
- ์ฃผ์ด์ง ํ์ด์ง ์๋งํผ ๋ฐ๋ณตํ์ฌ, ๊ฐ ๋ฆฌํฌํธ ๋ฆฌ์คํธ ํ์ด์ง๋ฅผ ์์ฐจ์ ์ผ๋ก ์์ฒญํ๊ณ ํ์ฑ
table = soup.find("table", {"class": "type_1"})
- ๋ค์ด๋ฒ ๋ฆฌํฌํธ ํ์ด์ง ๋ด์์ ์ค์ ๋ฆฌํฌํธ๊ฐ ๋์ด๋ table ํ๊ทธ๋ฅผ ํ์
for row in table.find_all("tr")[2:]:
...
- ํค๋๋ฅผ ์ ์ธํ ์์์์ ๋ฆฌํฌํธ ์ ๋ณด๋ฅผ ์ถ์ถ
stock_link = cols[0].find("a", class_="stock_item")
- ์ข ๋ชฉ๋ช ์ด ํ๊ทธ๋ก ๋ฌถ์ฌ ์์ ๊ฒฝ์ฐ ๋งํฌ์์ ์ข ๋ชฉ ์ฝ๋์ ์ด๋ฆ์ ์ถ์ถํ๊ณ , ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ๋ ํ ์คํธ๋ง ์ฌ์ฉ
pdf_content = "" if pdf_url == "PDF ์์" else pdf.download_and_process_pdf2(pdf_url, company)
report_content = fetch_report_details(detail_url)
- PDF URL์ด ์กด์ฌํ ๊ฒฝ์ฐ ํด๋น PDF๋ฅผ ๋ค์ด๋ก๋ํ์ฌ
download_and_process_pdf2
ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ํ ์คํธ๋ก ๋ณํ - HTML ๋ฆฌํฌํธ ๋ณธ๋ฌธ๋ ํจ๊ป ์์ง
industry_list = [
industry for industry, stock_list in industry_data.items() if item_name in stock_list
]
industry_value = industry_list[0] if industry_list else "Unknown"
- ์ข ๋ชฉ๋ช ์ ๊ธฐ๋ฐ์ผ๋ก ์ ์ข ์ ๋ณด๋ฅผ ๋งค์นญ ์ ์ข ๋ฐ์ดํฐ๊ฐ ์์ ๊ฒฝ์ฐ "Unknown"์ผ๋ก ๋ถ๋ฅ
reports.append({
'Category': category_name,
'์ข
๋ชฉ๋ช
': item_name,
'์ฝ๋': code,
'์
์ข
': industry_value,
'Title': title,
'์ฆ๊ถ์ฌ': company,
'PDF URL': pdf_url,
'์์ฑ์ผ': date,
'Views': views,
'Content': report_content,
'PDF Content': pdf_content,
})
- ํ๋์ ๋ฆฌํฌํธ๋ฅผ ๋์ ๋๋ฆฌ ํํ๋ก ๊ตฌ์ฑํ๊ณ , ์ ์ฒด ๋ฆฌ์คํธ์ ์ถ๊ฐ
๐ ๊ด๋ จ ๋ ํ์งํ ๋ฆฌ
- TalkStock-BE ํ๋ก์ ํธ ๋ฉ์ธ ๋ ํฌ์งํ ๋ฆฌ
crawling.py
: ์ข ๋ชฉ๋ถ์ ๋ฆฌํฌํธ ํฌ๋กค๋ง ์ฝ๋