Python 웹 크롤러 요청 라이브러리를 사용하는 방법

WBOY
풀어 주다: 2023-05-15 10:34:13
앞으로
1145명이 탐색했습니다.

1. 웹 크롤러란 무엇인가요?

간단히 말하면 인터넷에서 데이터를 자동으로 다운로드하고 구문 분석하고 정리하는 프로그램을 만드는 것입니다.

웹을 검색할 때와 마찬가지로 다음번에 쉽게 읽고 탐색할 수 있도록 관심 있는 콘텐츠를 노트북에 복사하여 붙여넣습니다. 웹 크롤러는 이러한 콘텐츠를 자동으로 완료하는 데 도움이 됩니다

물론, 어떤 콘텐츠가 발견되면 복사하여 붙여넣을 수 없는 웹사이트 - 웹 크롤러는 더욱 강력한 성능을 발휘할 수 있습니다.

웹 크롤러가 필요한 이유

데이터 분석이 필요한 경우 - 이 데이터는 웹 페이지에 여러 번 저장되므로 수동 다운로드에도 시간이 걸립니다. 이때 이 데이터를 자동으로 크롤링하는 데 도움이 되는 웹 크롤러가 필요합니다(물론 웹 페이지에서 쓸모없는 것들을 필터링합니다)

웹 크롤러 적용

네트워크 액세스 및 수집 데이터는 광범위합니다. 다양한 응용 프로그램 중 다수가 데이터 과학 분야에 속합니다. 다음 예를 살펴보겠습니다.

Taobao 판매자는 고객의 마음을 더욱 사로잡을 수 있도록 대규모 리뷰에서 유용한 긍정적인 정보와 부정적인 정보를 찾아야 합니다. , 고객의 쇼핑 심리를 분석합니다. 일부 학자들은 트위터, 웨이보 및 기타 소셜 미디어에서 정보를 수집하여 데이터 세트를 구축함으로써 우울증과 자살 충동을 식별하는 예측 모델을 구축하여 더 많은 사람들이 도움을 받을 수 있도록 했습니다. 또한 개인 정보 보호 관련 문제도 고려해야 합니다. 하지만 그래도 괜찮지 않습니까?

인공지능 엔지니어로서 Ins에서 자원봉사자의 선호도 사진을 크롤링하여 딥러닝 모델을 훈련하여 주어진 이미지가 자원봉사자가 좋아할 것인지 예측합니다. - 휴대전화 제조업체 이 모델을 사진 앱에 통합하여 푸시 당신에게. 전자상거래 플랫폼의 데이터 과학자들은 사용자가 검색한 상품의 정보를 크롤링하고 분석 및 예측을 수행하여 사용자가 가장 알고 싶어하고 구매하고 싶은 상품을 푸시합니다

예! 웹 크롤러는 고화질 배경화면과 사진을 매일 일괄 크롤링하는 것부터 인공지능, 딥러닝, 비즈니스 전략 수립을 위한 데이터 소스까지 폭넓게 사용되고 있습니다.

이 시대는 데이터의 시대, 데이터는 "새로운 석유"입니다.

2. 네트워크 전송 프로토콜 HTTP

네, 웹 크롤러라면 피할 수 없는 것이 바로 HTTP입니다. 네트워크 엔지니어만큼 자세하게 설명할 필요는 없지만 프로토콜 정의의 모든 측면을 이해할 필요는 있지만, 소개로서 여전히 어느 정도 이해해야 합니다.

국제 표준화 기구 ISO는 개방형 통신 시스템 상호 연결 참조 모델 OSI를 유지하고 있으며, 이 모델은 컴퓨터 통신 구조를 7개의 레이어로 나눕니다.

  1. 물리적 레이어: 이더넷 프로토콜, USB 프로토콜, 블루투스 프로토콜 등 포함

  2. 데이터 링크 레이어: 이더넷 프로토콜 포함

  3. 네트워크 레이어: IP 프로토콜 포함

  4. 전송 레이어: TCP, UDP 프로토콜 포함

  5. 세션 레이어: 세션 열기/닫기 및 관리를 위한 프로토콜 포함

  6. 프레젠테이션 레이어: 형식 보호 및 데이터 변환을 위한 프로토콜 포함

  7. 애플리케이션 레이어: HTTP 및 DNS 네트워크 서비스 프로토콜이 포함되어 있습니다.

이제 HTTP 요청과 응답이 어떤 것인지 살펴보겠습니다(사용자 정의 요청 헤더가 나중에 포함될 것이기 때문입니다). 일반 요청 메시지는 다음 내용으로 구성됩니다.

  • 요청 line

  • 여러 요청 헤더

  • 빈 줄

  • 선택 메시지 본문

특정 요청 메시지:

GET https://www.baidu.com/?tn=80035161_1_dg HTTP/1.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-Hans-CN,zh-Hans;q=0.8,en-GB;q=0.5,en;q=0.3
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.18362
Accept-Encoding: gzip, deflate, br
Host: www.baidu.com
Connection: Keep-Alive
로그인 후 복사

바이두 접속 시 요청입니다. 물론 알 필요는 없습니다. Python의 요청 패키지가 크롤링을 완료하는 데 도움이 되기 때문에 내부에 많은 세부 정보가 있습니다.

물론 요청에 대해 웹페이지에서 반환된 정보도 볼 수 있습니다.

HTTP/1.1 200 OK //这边的状态码为200表示我们的请求成功
Bdpagetype: 2
Cache-Control: private
Connection: keep-alive
Content-Encoding: gzip
Content-Type: text/html;charset=utf-8
Date: Sun, 09 Aug 2020 02:57:00 GMT
Expires: Sun, 09 Aug 2020 02:56:59 GMT
X-Ua-Compatible: IE=Edge,chrome=1
Transfer-Encoding: chunked
로그인 후 복사

3. 요청 라이브러리(이론적 지식을 좋아하지 않는 학생은 올 수 있음) 여기에서 직접)

우리는 Python이 실제로 사전에 있다는 것을 알고 있습니다. HTTP를 처리하기 위한 다른 라이브러리(urllib 및 urllib3)가 있지만 요청 라이브러리가 배우기 더 쉽습니다. 코드가 더 간단하고 이해하기 쉽습니다. 물론 웹 페이지를 성공적으로 크롤링하고 관심 있는 항목을 추출하면 매우 유용한 또 다른 라이브러리인 Beautiful Soup에 대해 언급하겠습니다. 이것은 나중에 이야기입니다

1 요청 라이브러리 설치

여기서 이야기하겠습니다. 설치 요청의 .whl 파일을 직접 찾거나 pip를 사용하여 직접 설치할 수 있습니다(물론 pycharm이 있는 경우 내부 환경 로더에서 직접 다운로드할 수 있습니다)

2. 우리는 공식적으로 웹페이지 크롤링을 시작합니다

코드는 다음과 같습니다:

import requests
target = 'https://www.baidu.com/'
get_url = requests.get(url=target)
print(get_url.status_code)
print(get_url.text)
로그인 후 복사

출력 결과

200 //返回状态码200表示请求成功
<!DOCTYPE html>//这里删除了很多内容,实际上输出的网页信息比这要多得多
<!--STATUS OK--><html> <head><meta http-equiv=content-type content=text/html;
charset=utf-8><meta http-equiv=X-UA-Compatible content=IE=Edge>
<meta content=always name=referrer>
<link rel=stylesheet type=text/css 
src=//www.baidu.com/img/gs.gif> 
</p> </div> </div> </div> </body> </html>
로그인 후 복사

위의 다섯 줄의 코드는 이미 웹페이지의 모든 HTML 콘텐츠를 크롤링할 수 있습니다

첫 번째 줄 코드: 요청 라이브러리 로드 두 번째 코드 줄: 크롤링해야 하는 웹사이트 제공 세 번째 코드 줄: 요청을 사용하여 요청을 작성합니다.

对象 = requests.get(url=你想要爬取的网站地址)
로그인 후 복사

네 번째 코드 줄: 요청의 상태 코드를 반환합니다. 코드의 다섯 번째 줄: 해당 콘텐츠 본문을 출력합니다

물론 더 많은 콘텐츠를 인쇄할 수도 있습니다

import requests

target = &#39;https://www.baidu.com/&#39;
get_url = requests.get(url=target)
# print(get_url.status_code)
# print(get_url.text)
print(get_url.reason)//返回状态
print(get_url.headers)
//返回HTTP响应中包含的服务器头的内容(和上面展示的内容差不多)
print(get_url.request)
print(get_url.request.headers)//返回请求中头的内容
로그인 후 복사
OK
{&#39;Cache-Control&#39;: &#39;private, no-cache, no-store, proxy-revalidate, no-transform&#39;, 
&#39;Connection&#39;: &#39;keep-alive&#39;, 
&#39;Content-Encoding&#39;: &#39;gzip&#39;, 
&#39;Content-Type&#39;: &#39;text/html&#39;, 
&#39;Date&#39;: &#39;Sun, 09 Aug 2020 04:14:22 GMT&#39;,
&#39;Last-Modified&#39;: &#39;Mon, 23 Jan 2017 13:23:55 GMT&#39;, 
&#39;Pragma&#39;: &#39;no-cache&#39;, 
&#39;Server&#39;: &#39;bfe/1.0.8.18&#39;, 
&#39;Set-Cookie&#39;: &#39;BDORZ=27315; max-age=86400; domain=.baidu.com; path=/&#39;, &#39;Transfer-Encoding&#39;: &#39;chunked&#39;}
<PreparedRequest [GET]>
{&#39;User-Agent&#39;: &#39;python-requests/2.22.0&#39;, 
&#39;Accept-Encoding&#39;: &#39;gzip, deflate&#39;, 
&#39;Accept&#39;: &#39;*/*&#39;, 
&#39;Connection&#39;: &#39;keep-alive&#39;}
로그인 후 복사

위 내용은 Python 웹 크롤러 요청 라이브러리를 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:yisu.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!