현재 위치 - 회사기업대전 - 기업 정보 조회 - 파이썬은 어떤 데이터를 크롤링할 수 있나요?

파이썬은 어떤 데이터를 크롤링할 수 있나요?

1. 필요한 첫 번째 줄 링크 크롤링

channel_extract.py

여기서 첫 번째 줄 링크는 주요 링크 카테고리라고 합니다.

channel_extract.py p>

from bs4 import BeautifulSoupimport 요청

start_url = '/wu/'host_url = '/' def get_channel_urls(url):

wb_data = 요청.get(url)

soup = BeautifulSoup(wb_data.text, 'lxml')

links = 수프.select('.fenlei > dt > a') #print(links)

링크의 링크:

page_url = host_url + link.get('href')

print(page_url)#get_channel_urls( start_url)channel_urls = '''

/jiaju/

/rirongbaihuo/

/shouji/

/bangong/

/nongyongpin/

/jiadian/

/ershoubijibendiannao/

/ruanjiantushu/

/yingyouyunfu/

/diannao/

/xianzhilipin/

/fushixiaobaxuemao/

/meironghuazhuang/

/shuma/

/laonianyongpin/

/xuniwupin/

''123456789101112131415161718192021222324252627282930313233343536

그러므로 제가 크롤링한 58개 도시를 예로 들어 링크를 크롤링했습니다. 중고시장의 모든 카테고리 중, 바로 나

이러한 링크의 고유한 특징을 찾아 출력하는 기능을 이용하여 멀티라인으로 저장합니다. 텍스트.

2. 필요한 세부 페이지의 링크와 세부 정보를 가져옵니다.

page_parsing.py

1. 데이터베이스에 대해 이야기해 보겠습니다.

먼저 코드를 살펴보세요:

#bs4에서 라이브러리 파일 가져오기 import BeautifulSoupimport presentsimport pymongo #Python은 MongoDB 라이브러리를 작동합니다 import reimport time#Link 및 데이터베이스 설정 클라이언트 = pymongo.MongoClient('localhost', 27017 )

ceshi = client['ceshi'] #ceshi 데이터베이스 구축 ganji_url_list = ceshi['ganji_url_list'] #테이블 파일 생성 ganji_url_info = ceshi['ganji_url_info']123456789101112

2. 판단 페이지 구조가 우리가 원하는 페이지 구조와 일치하는지, 예를 들어 404 페이지가 나올 때도 있습니다;

3. 페이지에서 원하는 링크, 즉 각 상세 페이지에 대한 링크를 추출합니다. ;

여기서 우리가 이야기할 것은 메소드에 관한 것입니다:

item_link = link.get('href').split('?')[0]12

여기 이 링크는 어떤 유형이고, 이 get 메서드는 무엇인가요?

나중에 이 유형이

1

특정 속성을 개별적으로 얻으려면 예를 들어, 클래스를 얻을 때 클래스 이름은 무엇입니까?

print Soup.p['class']

#['title']12

이 작업도 수행할 수 있습니다. get 메소드를 사용하여 속성 이름을 전달하세요. 둘은 동일합니다.

print Soup.p.get('class')#['title ']12

다음 코드를 붙여넣습니다.

#모든 제품 세부정보 페이지 링크를 크롤링합니다. def get_type_links(channel, num):

list_view = ' {0}o{1}/'.format(channel, str(num)) #print(list_view)

wb_data = 요청.get(list_view)

soup = BeautifulSoup( wb_data.text, 'lxml')

linkOn = Soup.select('.pageBox') #필요한 페이지의 플래그인지 확인합니다.

#선택한 경우 아래로 내려간 링크는 다음과 같습니다: div.pageBox > ul > li:nth-child(1) > a >span 여기서:nth-child(1)는 삭제되어야 합니다

#print(linkOn)

linkOn인 경우:

link = 수프.select('.zz > .zz-til > a')

link_2 = 수프.select('.js- item > a')

link = link + link_2 #print(len(link))

for linkc in link:

linkc = linkc.get( 'href')

ganji_url_list .insert_one({'url': linkc})

print(linkc) else: pass1234567891011121314151617181920

4. 세부정보 페이지에서 필요한 정보를 크롤링합니다.

코드를 게시하겠습니다.

# Ganji 웹사이트 세부정보 페이지 링크 크롤링: def get_url_info_ganji(url):

time.sleep(1)

wb_data = 요청.get(url)

수프 = BeautifulSoup(wb_data.text, 'lxml') 시도:

title = 수프.select('head > title')[0].text

timec = 수프.선택 ( '.pr-5')[0].text.strip()

type = 수프.select('.det-infor > li > 스팬 > a')[0].text

가격 = 수프.select('.det-infor > li > i')[0].text

place = 수프.select('.det-infor > li > a' ) [1:]

placeb = [] for placec in place:

placeb.append(placec.text)

tag = 수프.select(' . second-dt-bewrite > ul > li')[0].text

tag = ''.join(tag.split()) #print(time.split())

data = { 'url' : url, 'title' : 제목, 'time' : timec.split(), 'type' : 유형, 'price' : 가격, 'place' : placeb, 'new' : 태그

}

ganji_url_info.insert_one(data) # 데이터베이스에 데이터 조각 삽입;

print(data) 제외 IndexError: pass123456789101112131415161718192021222324252627282930

4. 주요 기능을 작성하는 방법은 무엇입니까?

main.py

코드 보기:

#먼저 다른 파일의 함수와 데이터를 소개합니다: from multiprocessing import Poolfrom page_parsing import get_type_links,get_url_info_ganji,ganji_url_listfrom Channel_extract import Channel_urls#모든 링크를 크롤링하는 함수: def get_all_links_from(channel):

for i in range(1,100):

get_type_links(channel,i)#그런 다음 이 함수를 실행합니다. 모든 세부정보 페이지를 크롤링하는 데 사용됩니다. if __name__ == '__ma

in__':# pool = Pool()# # pool = Pool()# pool.map(get_url_info_ganji, [url['url'] for url in ganji_url_list.find()])# pool.close()# pool.join ()#먼저 다음 함수를 실행하여 모든 링크를 크롤링합니다: if __name__ == '__main__':

pool = Pool()

pool = Pool()

pool.map(get_all_links_from,channel_urls.split())

pool.close()

pool.join()1234567891011121314151617181920212223242526

5.

count.py

크롤링된 데이터 수를 표시하는 데 사용됩니다.

import timefrom page_parsing import ganji_url_list,ganji_url_infowhile True: # print( ganji_url_list.find() .count())

# time.sleep(5)

print(ganji_url_info.find().count())

time.sleep(5 )

copyright 2024회사기업대전