일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- colab runtime
- 크롤링
- 알고리즘
- python buildpacks
- 해시태그
- convert to shp
- string to list
- 코랩 런타임
- 혁신성장부문
- 플라스크
- Merge Repositories
- plotly dash
- Python
- Selenium
- kmeans
- Crawling
- clustering
- geopandas
- to shp
- 셀레니움
- 괄호 문제
- 웹페이지
- flask
- geoDataFrame
- Chat-GPT
- 파이썬
- NLP
- 2164 카드2
- 인스타그램
- 백준
- Today
- Total
목록전체 글 (76)
코딩코딩코딩
이전까지 작성했던 내용들은 인스타그램 게시물을 모두 가져오고 난 후에 데이터프레임 형식으로 변환하여 기간을 설정하려고 했었습니다. 이번에는 코드를 수정하여 기간을 설정하고 난 후에 함수를 실행해 그 기간 사이에 있는 게시물들만 크롤링해오려고 합니다. 기존 selenium에서 page scroll을 통해 모든 게시물의 링크를 가져온 후 링크를 읽어들였는데, 이 방법이 아니라 링크를 가져온 후 하나하나씩 읽어가며 날짜를 비교하는 방식으로 코드를 짰습니다. 최초 스크롤 시 게시물이 33개 읽히며 이후 스크롤마다 12개의 게시물을 읽을 수 있습니다. 이 때 임시 리스트를 만들어서 12개의 게시물을 추가한 후 12개의 게시물 모두 설정 기간 내에 존재하지 않는 글이면 함수를 종료하는 방식입니다. (게시물 중간중간..
지난 번 마지막 코드에서 인스타그램 pc버전에서는 중간에 뜬금없는 날짜의 게시물이 올라와서 다음 게시글의 시간과 비교하는 코드를 넣었었습니다. 이렇게 해보니 코드 효율성이 너무 떨어서 시간이 배로 걸려 코드를 수정했습니다. 다음 게시글의 timestamp를 확인하는 것이 아니라 전 게시물의 것을 확인해서 비교했습니다. 전 게시물 같은 경우에는 date_list라는 리스트에 이미 날짜를 변환해서 넣어놨기 때문에 날짜를 다시 timestamp로 변환하는 과정을 거친 후, timestamp 기준 하루(86400) 이상 차이가 나면 pass하도록 했습니다. 추가적으로 계정 명에 shared on instagram 같은 것이 포함돼서 수정하는 코드도 포함했습니다. def to_timestamp(std_date):..
앞에서 했던 작업들을 모두 함수로 만들어서 작업했습니다. # Create Empty List & Parameter Setting url = 'http://www.instagram.com' path = 'C:\\Users\\rectworks\\Downloads\\chromedriver_win32\\chromedriver.exe' SCROLL_PAUSE_TIME = 3.0 ID = 'user_id' PW = 'password' post_link = [] popularPost_len = [] id_list = [] like_list = [] tag_list = [] link_list = [] date_list = [] month_list = [] day_list = [] def instagram_login(i..
지난 번 내용과 이어서 해시태그와 좋아요, 날짜등을 가져오는 함수를 만들어보도록 하겠습니다. SCROLL_PAUSE_TIME = 2.0 post_link = [] while True: pageString = driver.page_source # page_source : 현재 렌더링된 페이지의 Elements를 모두 가져옴 bsObj = bs(pageString, 'lxml') for postline in bsObj.find_all(name='div', attrs={"class":"Nnq7C weEfm"}): a_len = len(postline.select('a')) # 인스타그램 게시물은 행별로 최대 3개까지 확인할 수 있는데, 최근게시물이나 마지막 게시물은 1,2개가 나올 수도 있어서 len 지정 f..
1. Selenium 기반 웹 크롤링 기법 2. 해시태그, 좋아요 등의 정보 크롤링 3. 인스타그램 해시태그와 좋아요 수를 크롤링한 후 각자 개수를 비교해서 어떤 영향을 미치는지 확인할 것 - 키워드 네트워크 분석기법 활용 # Selenium Basic command 1. driver.get('url') : 페이지 접속 2. elem = driver.find_element_by_name('q') : 커서를 검색어 입력 부분에 위치시킴 - find_by_class_name or find_by_xpath 등도 가능 (xpath는 html 검사 시 우클릭>xpath copy로 복사 가능 3. elem.clear() : 검색어 부분 입력내용 삭제 4. elem.send_keys('내용') : 내용 입력 5. e..
- 단순 복사는 복사된 데이터에 변형을 주면 원본데이터에도 변형이 일어납니다. - 얕은 복사는 2차원 리스트를 예로 들었을 때, 단순 값으로 배정된 원소의 경우 원본데이터에 영향을 미치지 않지만 2차원 리스트 내에 있는 원소에 변형을 줄 경우 원본데이터에 영향을 미칩니다. 2차원 원소의 경우 리스트 형태만 복사했다고 생각하면 됩니다. - 깊은 복사는 얕은 복사에서 원본데이터에 영향을 주었던 2차원 원소 역시도 복사가 되어 전혀 영향을 주지 않습니다. 예제 코드 > 1. 단순 복사 x = [1,2,3] y = x print(y) # [1,2,3] 출력 y[2] = 300 print(x,y) # [1,2,300], [1,2,300] 출력 2. 얕은 복사 a = [4,[1,2,3],6] # 2차원 리스트 b ..