코딩 공부 시작한지 한달 정도 되어서 자세히 알진 못합니다.
요즘 웹 크롤러 짜고 있는데
contents_collect 쪽 search 텀에서 오류가 발생해요
search관련 부분을 지우고 돌리면 작동하긴 한데
검색항목을 다른데로 둬서 돌려야 할까요?
import requests
from bs4 import BeautifulSoup
import time
from multiprocessing import Pool
class marumaru:
# 웹 수집을 위한 함수 정의
def link_collect():
max_pages = int(input("검색할 페이지 수를 적으세요: "))
page = 1
while page <= max_pages:
# 소스를 받을 사이트를 정함
url = 'http://www.marumaru.in/?m=bbs&bid=mangaup&p=' + str(page)
source_code = requests.get(url)
plain_text = source_code.text
soup = BeautifulSoup(plain_text, "lxml")
# 사이트에서 제목 부분 코드 뽑아서 프린트
data = []
for link in soup.select('td > a'):
data.append(link.get("href"))
return data
# 링크 및 제목 표시
def contents_collect(link):
search = input("검색어(없으면 엔터): ") # 오류발생
href = 'http://www.marumaru.in' + link
title_code = requests.get(href)
title_text = title_code.text
title_soup = BeautifulSoup(title_text, "lxml")
for name in title_soup.select('div.subject > h1'):
if search in str(name):
print(href)
print(name.text)
else:
pass
if __name__ == "__main__":
start_time = time.time()
pool = Pool(processes=4)
pool.map(marumaru.contents_collect, marumaru.link_collect())
print("---%s sec---" % (time.time() - start_time)