Python은 Google 검색 결과를 크롤링합니다.
얼마 전부터 Python을 사용하여 검색 엔진 결과를 크롤링하는 방법을 연구하고 있습니다. 구현 과정에서 많은 문제가 발생했습니다. 어린이 신발에서 동일한 문제가 발생하지 않기를 바랍니다. 미래에는 우회하세요.
1. 검색 엔진 선택
좋은 검색 엔진을 선택하면 보다 정확한 검색 결과를 얻을 수 있습니다. 제가 사용한 검색 엔진은 Google, Bing, Baidu, Yahoo! 등 4가지입니다. 프로그래머로서 Google을 최우선으로 선택합니다. 그런데 내가 가장 좋아하는 Google이 나에게 js 코드 한 뭉치만 돌려주는 것을 보니 내가 원하는 검색 결과가 전혀 나오지 않았다. 그래서 Bing 캠프를 한동안 사용해 본 결과 Bing에서 반환된 검색 결과가 내 문제에 적합하지 않다는 것을 알게 되었습니다. 제가 절망에 빠졌을 때 구글이 저를 구해줬습니다. 브라우저에서 js 사용을 금지하는 사용자를 처리하기 위해 Google에서는 다음 검색 URL을 참조하세요.
https://www.google.com .hk/search?hl= en&q=hello
hl은 검색할 언어를 지정하고, q는 검색하려는 키워드입니다. 음, Google 덕분에 검색결과 페이지에 내가 크롤링하려는 콘텐츠가 포함되어 있습니다.
추신: 인터넷의 많은 방법에서는 Python을 사용하여 Google 검색 결과를 크롤링하거나 https://ajax.googleapis.com/ajax/services/search/web...을 사용합니다. 이 방법은 Google에서 더 이상 권장하지 않습니다. https://developers.google.com/web-search/docs/를 참조하세요. Google은 이제 맞춤 검색 API를 제공하지만 API는 하루에 100개의 요청으로 제한됩니다. 더 필요한 경우 해당 비용만 지불하면 됩니다.
2. Python은 웹 페이지를 크롤링하고 분석합니다.
Python을 사용하여 웹 페이지를 크롤링하는 것은 말할 것도 없이 매우 편리합니다.
def search(self, queryStr): queryStr = urllib2.quote(queryStr) url = 'https://www.google.com.hk/search?hl=en&q=%s' % queryStr request = urllib2.Request(url) response = urllib2.urlopen(request) html = response.read() results = self.extractSearchResults(html)
html을 참조하세요. 6번째 줄은 우리가 크롤링한 검색 결과 페이지의 소스 코드입니다. Python을 사용한 학생들은 Python이 URL 요청과 관련된 두 개의 모듈인 urllib 및 urllib2를 제공한다는 것을 알게 될 것입니다. 그러나 urllib는 URL만 수신할 수 있는 반면 urllib2는 Request 클래스의 인스턴스를 허용할 수 있습니다. URL 요청의 헤더를 설정합니다. 이는 사용자 에이전트 등을 위장할 수 있음을 의미합니다(아래에서 사용됨).
이제 Python을 사용하여 웹 페이지를 크롤링하고 저장할 수 있으므로 소스 코드 페이지에서 원하는 검색 결과를 추출할 수 있습니다. Python은 htmlparser 모듈을 제공하지만 사용하기가 비교적 번거롭습니다. 여기서는 매우 유용한 웹페이지 분석 패키지인 BeautifulSoup을 추천합니다.
위 코드를 사용하면 적은 수의 쿼리에는 비교적 괜찮지만 수천 개의 쿼리를 수행하려는 경우 Google은 더 이상 요청 소스를 감지하지 못합니다. 귀하가 기계를 사용하여 Google 검색결과를 자주 크롤링하는 경우 Google은 귀하의 IP를 차단하고 곧 503 오류 페이지를 반환합니다. 이는 우리가 원하는 결과가 아니므로
계속 탐색해 보겠습니다. 앞서 언급했듯이 urllib2를 사용하면 URL 요청의 헤더를 설정하고 사용자 에이전트를 위장할 수 있습니다. 간단히 말해서, 사용자 에이전트는 클라이언트 브라우저와 같은 애플리케이션에서 사용하는 특수 네트워크 프로토콜로, 브라우저(이메일 클라이언트/검색 엔진 스파이더)가 HTTP 요청을 할 때마다 서버로 전송되며, 서버는 사용자를 알고 있습니다. (이메일 클라이언트/검색 엔진 스파이더)를 사용하여 액세스합니다. 때때로 어떤 목적을 달성하기 위해 우리는 선의로 서버를 속이고 내가 당신에게 접근하기 위해 기계를 사용하지 않는다고 말해야 합니다.
따라서 코드는 다음과 같습니다.
user_agents = ['Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20130406 Firefox/23.0', \ 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:18.0) Gecko/20100101 Firefox/18.0', \ 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/533+ \ (KHTML, like Gecko) Element Browser 5.0', \ 'IBM WebExplorer /v0.94', 'Galaxy/1.0 [en] (Mac OS X 10.5.6; U; en)', \ 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)', \ 'Opera/9.80 (Windows NT 6.0) Presto/2.12.388 Version/12.14', \ 'Mozilla/5.0 (iPad; CPU OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) \ Version/6.0 Mobile/10A5355d Safari/8536.25', \ 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) \ Chrome/28.0.1468.0 Safari/537.36', \ 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.0; Trident/5.0; TheWorld)'] def search(self, queryStr): queryStr = urllib2.quote(queryStr) url = 'https://www.google.com.hk/search?hl=en&q=%s' % queryStr request = urllib2.Request(url) index = random.randint(0, 9) user_agent = user_agents[index] request.add_header('User-agent', user_agent) response = urllib2.urlopen(request) html = response.read() results = self.extractSearchResults(html)
user_agents 목록에 겁먹지 마세요. 실제로는 10개의 사용자 에이전트 문자열입니다. 이렇게 하면 더 잘 위장할 수 있습니다. 더 많은 사용자 에이전트가 필요하면 여기 UserAgentString을 참조하세요.
17-19행은 사용자 에이전트 문자열을 무작위로 선택한 다음 요청의 add_header 메서드를 사용하여 사용자 에이전트를 위장하는 것을 나타냅니다.
사용자 에이전트를 위장하여 검색 엔진 결과를 계속 크롤링할 수 있습니다. 이것이 작동하지 않으면 두 쿼리 사이에 일정 시간 동안 무작위로 잠을 자는 것이 좋습니다. 이는 크롤링 속도에 영향을 미칩니다. 더 지속적인 크롤링 결과를 얻을 수 있습니다. IP가 여러 개인 경우 크롤링 속도도 빨라집니다.

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Linux 터미널에서 Python 버전을 보려고 할 때 Linux 터미널에서 Python 버전을 볼 때 권한 문제에 대한 솔루션 ... Python을 입력하십시오 ...

Fiddlerevery Where를 사용할 때 Man-in-the-Middle Reading에 Fiddlereverywhere를 사용할 때 감지되는 방법 ...

10 시간 이내에 컴퓨터 초보자 프로그래밍 기본 사항을 가르치는 방법은 무엇입니까? 컴퓨터 초보자에게 프로그래밍 지식을 가르치는 데 10 시간 밖에 걸리지 않는다면 무엇을 가르치기로 선택 하시겠습니까?

Python의 Pandas 라이브러리를 사용할 때는 구조가 다른 두 데이터 프레임 사이에서 전체 열을 복사하는 방법이 일반적인 문제입니다. 두 개의 dats가 있다고 가정 해

Uvicorn은 HTTP 요청을 어떻게 지속적으로 듣습니까? Uvicorn은 ASGI를 기반으로 한 가벼운 웹 서버입니다. 핵심 기능 중 하나는 HTTP 요청을 듣고 진행하는 것입니다 ...

Linux 터미널에서 Python 사용 ...

Investing.com의 크롤링 전략 이해 많은 사람들이 종종 Investing.com (https://cn.investing.com/news/latest-news)에서 뉴스 데이터를 크롤링하려고합니다.
