2017-04-26 3 views
-2

JSON으로 결과 저장 :webscraping 나는 이런 식으로 BeautifulSoup로와 웹 사이트를 긁어 할

홈 페이지에서
  1. 40 개 종류 그냥 이름

  2. 그런 다음 (startupstash 모든 카테고리 예로 이동 .COM/ideageneration /) 및 점에서

  3. 지금 모든 하위 범주 가정하자 첫 번째 startupstash.com/resource/milanote/로 이동하여 콘텐츠 세부 사항을 몇 가지 하위 범주가있을 것입니다

4.이 방법은 40 개 카테고리 + 하위 카테고리 + 각 하위 카테고리 세부 정보에 동일한 방식으로 적용됩니다.

누군가가 먼저 '사용자 에이전트'를 추가 할 필요가 아래로

import requests 
from bs4 import BeautifulSoup 
headers={'User-Agent':'Mozilla/5.0'} 


base_url="http://startupstash.com/" 
req_home_page=requests.get(base_url,headers=headers) 
soup=BeautifulSoup(req_home_page.text, "html5lib") 
links_tag=soup.find_all('li', {'class':'categories-menu-item'}) 
titles_tag=soup.find_all('span',{'class':'name'}) 
links,titles=[],[] 

for link in links_tag: 
    links.append(link.a.get('href')) 
#print(links) 
for title in titles_tag: 
    titles.append(title.getText()) 
print("HOME PAGE TITLES ARE \n",titles)                
#HOME PAGE RESULT TITLE FINISH HERE 

for i in range(0,len(links)): 
    req_inside_page = requests.get(links[i],headers=headers) 
    page_store =BeautifulSoup(req_inside_page.text, "html5lib") 
    jump_to_next=page_store.find_all('div', { 'class' : 'company-listing more' }) 
    nextlinks=[] 
    for div in jump_to_next: 
     nextlinks.append(div.a.get("href")) 
    print("DETAIL OF THE LINKS IN EVERY CATEGORIES SCRAPPED HERE \n",nextlinks)      #SCRAPPED THE WEBSITES IN EVERY CATEGORIES 

    for j in range(0,len(nextlinks)): 
     req_final_page=requests.get(nextlinks[j],headers=headers) 
     page_stored=BeautifulSoup(req_final_page.text,'html5lib') 
     detail_content=page_stored.find('div', { 'class' : 'company-page-body body'}) 
     details,website=[],[] 
     for content in detail_content: 
     details.append(content.string) 
     print("DESCRIPTION ABOUT THE WEBSITE \n",details)          #SCRAPPED THE DETAILS OF WEBSITE 


     detail_website=page_stored.find('div',{'id':"company-page-contact-details"}) 
     table=detail_website.find('table') 
     for tr in table.find_all('tr')[2:]: 
      tds=tr.find_all('td')[1:] 
      for td in tds: 
       website.append(td.a.get('href')) 
       print("VISIT THE WEBSITE \n",website) 
+0

정확한 문제는 무엇입니까? 시도한 것과 달성하지 못한 것을 설명하십시오. 아무도 당신을 위해 모든 스크레이퍼를 쓰려고하지 않습니다. – VeGABAU

+0

@ VeGABAU ..이 전체 웹 사이트를 해결하기위한 접근 방식이 필요합니다. 첫 번째 페이지에서 모든 카테고리 이름이 필요합니다. 두 번째는 각 카테고리로 이동하고 세 번째 페이지는 세 번째 페이지의 세분 섹션 ..... – pupu

답변

0

것을 확인하려고 나에게 beautifulsoup..or 수 code..i과 방법을 approach..or하는 방법 아이디어를 제공 할 수 있습니다하세요 머리글에 웹 브라우저를 시뮬레이션하십시오 (웹 사이트를 남용하지 마십시오).

links = [ li.a.get('href') for li in soup.find_all('li', {'class':'categories-menu-item'}) ] 

그리고 그 링크를 통해 루프하고 각각에 대한 링크를 얻을 :

links = [ div.a.get('href') for div in soup.find_all('div', { 'class' : 'company-listing-more' }) ] 

가 마지막으로 콘텐츠를 :


그런 다음이 줄을 첫 페이지에서 링크를 추출 할 수 있습니다
content = soup.find('div', { 'class' : 'company-page-body body'}).text 
+0

Heartfull 감사합니다 사랑하는 @adam – pupu

+0

그것은 열심히 아니 었어, 당신이 할 일은 html을 검사하고 적절한 태그를 선택하는 것입니다. –

+0

@adam, 나는 더 많은 방법을 시도했지만, 결과는 실행되지 않습니다. 위 코드를 변경했습니다. 가능한 한 검사하고 홈 페이지 execution.Result에 대한 실수가 x 초 만에 끝난다는 것을 알려주십시오. – pupu

관련 문제