Showing
2 changed files
with
115 additions
and
0 deletions
daangn/daangn_crawl.py
0 → 100644
1 | +from base64 import encode | ||
2 | +from bs4 import BeautifulSoup | ||
3 | +import requests | ||
4 | +import json | ||
5 | + | ||
6 | +def save_json(parsed_items): | ||
7 | + with open('./sample.json', 'w') as f: | ||
8 | + json.dump(parsed_items, f, indent=2, ensure_ascii=False) | ||
9 | + | ||
10 | +def convert_item_to_dict(item): | ||
11 | + dict_item = {} | ||
12 | + dict_item["item-thumbnail"] = item.find("img")["src"] | ||
13 | + dict_item["item-title"] = item.find("span", class_="article-title").text.strip() | ||
14 | + dict_item["item-content"] = item.find("span", class_="article-content").text.strip() | ||
15 | + dict_item["item-region"] = item.find("p", class_="article-region-name").text.strip() | ||
16 | + dict_item["item-price"] = item.find("p", class_="article-price").text.strip() | ||
17 | + if(item.find("span", class_="article-watch") == None): | ||
18 | + dict_item["item-watch-count"] = '0' | ||
19 | + else: | ||
20 | + dict_item["item-watch-count"] = item.find("span", class_="article-watch").text.strip() | ||
21 | + return dict_item | ||
22 | + | ||
23 | +# def convert_item_to_json(item): | ||
24 | +# dict_item = {} | ||
25 | +# dict_item["item-thumbnail"] = item.find("img")["src"] | ||
26 | +# dict_item["item-title"] = item.find("span", class_="article-title").text.strip() | ||
27 | +# dict_item["item-content"] = item.find("span", class_="article-content").text.strip() | ||
28 | +# dict_item["item-region"] = item.find("p", class_="article-region-name").text.strip() | ||
29 | +# dict_item["item-price"] = item.find("p", class_="article-price").text.strip() | ||
30 | +# if(item.find("span", class_="article-watch") == None): | ||
31 | +# dict_item["item-watch-count"] = '0' | ||
32 | +# else: | ||
33 | +# dict_item["item-watch-count"] = item.find("span", class_="article-watch").text.strip() | ||
34 | + | ||
35 | +# json_item = json.dumps(dict_item, ensure_ascii=False) | ||
36 | +# return json_item | ||
37 | + | ||
38 | +def crawl(keyword): | ||
39 | + if type(keyword) != type("test string"): | ||
40 | + return "Error: Invalid Keyword" | ||
41 | + | ||
42 | + BASE_URL = "https://www.daangn.com/search/" | ||
43 | + URL = BASE_URL + keyword | ||
44 | + res = requests.get(URL) | ||
45 | + html = res.text | ||
46 | + soup = BeautifulSoup(html, 'html.parser') | ||
47 | + | ||
48 | + items = soup.select('.flea-market-article-link') | ||
49 | + parsed_items = {} | ||
50 | + parsed_items["length"] = str(len(items)) | ||
51 | + parsed_items["items"] = [] | ||
52 | + for i in range (0, len(items)): | ||
53 | + item = items[i] | ||
54 | + json_item = convert_item_to_dict(item) | ||
55 | + parsed_items["items"].append(json_item) | ||
56 | + | ||
57 | + save_json(parsed_items) | ||
58 | + json_items = json.dumps(parsed_items, ensure_ascii=False, indent=2) | ||
59 | + return json_items | ||
60 | + | ||
61 | +if __name__ == "__main__": | ||
62 | + print(crawl("RTX 3080")) | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
daangn/sample.json
0 → 100644
1 | +{ | ||
2 | + "length": "6", | ||
3 | + "items": [ | ||
4 | + { | ||
5 | + "item-thumbnail": "https://dnvefa72aowie.cloudfront.net/origin/article/202205/ADB1646017CBA520AA41B245956BD92B3DAA3D2A4372779F2233456B94ED531E.jpg?q=82&s=300x300&t=crop", | ||
6 | + "item-title": "12600k + rtx3080 게이밍pc 데스크탑", | ||
7 | + "item-content": "3월에 구매해서 2달가량 사용했습니다\n\n컴퓨존 기준 225정도 나옵니다\n\n궁금하신점은 문의주세요\n\ncpu : i5-12600k\nm/b : asus rog strix b660-a wifi stcom\n램 : 삼성 ddr4-25600 32gb (16x2)\n그래픽카드 : msi rtx3080 gaming z trio 10gb\nssd : sk p31 500gb\n쿨러 : rc400 화이트\n파워 : 마이크로닉스 클래식2 850w 풀모듈러 화이트\n케이스 : 앱코 p1000 화이트", | ||
8 | + "item-region": "경기도 안양시 동안구 비산2동", | ||
9 | + "item-price": "1,800,000원", | ||
10 | + "item-watch-count": "2" | ||
11 | + }, | ||
12 | + { | ||
13 | + "item-thumbnail": "https://dnvefa72aowie.cloudfront.net/origin/article/202205/F0A3C9B8A7A6AE705E768AA714CDA90C42FE8416B91C6D02606F8CFE370853AD.jpg?q=82&s=300x300&t=crop", | ||
14 | + "item-title": "RTX3080 12g 기가바이트 이글 미개봉", | ||
15 | + "item-content": "RTX3080 12g 기가바이트 이글 미개봉 팝니다\n미개봉품 2차구매했는데 다른거 구해서 팔아요\n3080 12기가중 전국최저가", | ||
16 | + "item-region": "경북 칠곡군 석적읍", | ||
17 | + "item-price": "950,000원", | ||
18 | + "item-watch-count": "1" | ||
19 | + }, | ||
20 | + { | ||
21 | + "item-thumbnail": "https://dnvefa72aowie.cloudfront.net/origin/article/202205/05c55f346c00c7a0a95c91db4ee35aa86d3ccc20f870bdea7b5edff006dc33ae.webp?q=82&s=300x300&t=crop", | ||
22 | + "item-title": "rtx 3080 msi suprim x", | ||
23 | + "item-content": "3월에 주문했는데\n대한통운 파업때문에 1달정도 밖에 사용안했습니다\n채굴x 흡연x 반려동물 x\n게임용도로만 사용했으며\n하자없습니다\n직거래는 수원이며 집앞까지 오시면 2만원 깎아드려요\nrtx3080 슈프림 x", | ||
24 | + "item-region": "경기도 수원시 팔달구 매산로2가", | ||
25 | + "item-price": "1,050,000원", | ||
26 | + "item-watch-count": "4" | ||
27 | + }, | ||
28 | + { | ||
29 | + "item-thumbnail": "https://dnvefa72aowie.cloudfront.net/origin/article/202203/185b1b0a4a5bf7a2b1b9c7ec37803bab70dbb09fc436d085eb298df557991b19.webp?q=82&s=300x300&t=crop", | ||
30 | + "item-title": "게이밍 본체 AMD라이젠7-5800X 지포스RTX3080", | ||
31 | + "item-content": "21년10중순이후사용 아우스3년as\n앞으로2년6개월정도남았습니다. 삼성16램추가 총32기가 수냉식! 홀로남아있어요.거의 사용 안함.\n아들이 고1이라서 시간이 없어 판매중입니다", | ||
32 | + "item-region": "부산 연제구 거제제4동", | ||
33 | + "item-price": "3,200,000원", | ||
34 | + "item-watch-count": "5" | ||
35 | + }, | ||
36 | + { | ||
37 | + "item-thumbnail": "https://dnvefa72aowie.cloudfront.net/origin/article/202204/e2081b5dd2f5f0c18f5c692f9ad3d206beee493aec4d3b2ca6909f172499efd0.webp?q=82&s=300x300&t=crop", | ||
38 | + "item-title": "게이밍노트북 / 지포스 RTX 3080그래픽 RAZER BLADE 15 Advanced 10Gen R3080 FHD", | ||
39 | + "item-content": "시용한지 1년안된 노트북 판매합니다\n모든게임 풀가능\n\n■ 구입 시기\n\n구입 날짜 : 2021. 8\n\n실 개봉 일자 : 2021. 9\n\n구매 금액 : 3,700,000원\n\n■ 배터리 정보\n\n배터리 수명 97.58% 이며 외관 상태 거의 사용감 없습니다.\n\n■ 노트북 정보\n\n품명 / 모델명\n\n노트북 / RAZER BLADE 15 Advanced 10Gen R3080 FHD\n\nR-R-raz-RZ09-0367 / XU100277-19018D\n\n크기\n\n16.99 x 235 x 355 mm\n\n무게\n\n무게 2.01kg\n\n주요 사양\n\n39.62cm(15.6인치) / 인텔 / 코어i7-10세대 / 코멧레이크 / i7-10875H / 2.3GHz(5.1GHz) / 운영체제(OS): 윈도우10 / sRGB 100% / 지포스 RTX 3080 / 32GB 메모리 / SSD 1TB\n\n기본 구성품 박스 포함 (전원 케이블, 노트북 본체)입니다", | ||
40 | + "item-region": "경기도 고양시 일산서구 주엽1동", | ||
41 | + "item-price": "2,600,000원", | ||
42 | + "item-watch-count": "6" | ||
43 | + }, | ||
44 | + { | ||
45 | + "item-thumbnail": "https://dnvefa72aowie.cloudfront.net/origin/article/202205/51f62ae1015fa1ac98f0b1c677625d657336a06950180104a7fb809f13e7fe90.webp?q=82&s=300x300&t=crop", | ||
46 | + "item-title": "RTX3080 10GB LHR 화이트스트릭스(화스) 판매합니다", | ||
47 | + "item-content": "21/08/03) 컴퓨존에서 구입한제품입니다\n\n기스 하나없이 사용했으며 풀박스구성으로 반지,스트랩등 구성품 전부 미사용입니다\n\n(포트마개 한개가 분실되어 이점만 유의부탁드려요)\n\n제 시스템상 고주파는 양호해서 문제없이 사용했었습니다\n\n거래명세서도 출력해서 같이 드려요\n\n+ 당일 동일제품 중고나라 시세맞춰서 가격잡았습니다 무리한 네고는 답변안합니다", | ||
48 | + "item-region": "경기도 수원시 영통구 망포동", | ||
49 | + "item-price": "1,220,000원", | ||
50 | + "item-watch-count": "2" | ||
51 | + } | ||
52 | + ] | ||
53 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
-
Please register or login to post a comment