2024-07-11
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
웹 크롤러는 웹 콘텐츠를 자동으로 검색하는 데 사용되는 프로그램입니다. 사용자가 웹 페이지를 탐색하는 프로세스를 시뮬레이션하고, HTTP 요청을 전송하여 웹 페이지의 소스 코드를 얻고, 구문 분석 및 추출 기술을 사용하여 필요한 데이터를 얻습니다.
크롤러는 대상 웹사이트에 HTTP 요청을 보냅니다. 요청에는 URL, 요청 방법(예: GET 또는 POST), 요청 헤더(Headers) 등이 포함됩니다. 서버는 요청을 받은 후 상태 코드, 응답 헤더 및 응답 본문(웹 페이지 콘텐츠)이 포함된 HTTP 응답을 반환합니다.
requests
그리고aiohttp
, HTTP 요청을 보내는 데 사용됩니다.BeautifulSoup
、lxml
그리고PyQuery
, 웹페이지 콘텐츠를 구문 분석하는 데 사용됩니다.pandas
그리고SQLite
, 크롤링된 데이터를 저장하는 데 사용됩니다.asyncio
그리고aiohttp
, 비동기 크롤러를 구현하고 크롤링 효율성을 향상시키는 데 사용됩니다.다음으로 Python 크롤러의 기본 지식을 더 잘 배우고 이해하는 데 도움이 되도록 Python 크롤러의 7가지 작은 사례를 사용하겠습니다. 다음은 각 사례에 대한 소개 및 소스 코드입니다.
이 경우에는BeautifulSoup
라이브러리는 상위 250개 Douban 영화에서 영화 제목, 평점, 리뷰어 수와 같은 정보를 크롤링하고 이 정보를 CSV 파일에 저장합니다.
- import requests
- from bs4 import BeautifulSoup
- import csv
-
- # 请求URL
- url = 'https://movie.douban.com/top250'
- # 请求头部
- headers = {
- 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'
- }
-
- # 解析页面函数
- def parse_html(html):
- soup = BeautifulSoup(html, 'lxml')
- movie_list = soup.find('ol', class_='grid_view').find_all('li')
- for movie in movie_list:
- title = movie.find('div', class_='hd').find('span', class_='title').get_text()
- rating_num = movie.find('div', class_='star').find('span', class_='rating_num').get_text()
- comment_num = movie.find('div', class_='star').find_all('span')[-1].get_text()
- writer.writerow([title, rating_num, comment_num])
-
- # 保存数据函数
- def save_data():
- f = open('douban_movie_top250.csv', 'a', newline='', encoding='utf-8-sig')
- global writer
- writer = csv.writer(f)
- writer.writerow(['电影名称', '评分', '评价人数'])
- for i in range(10):
-