찾다
백엔드 개발파이썬 튜토리얼Python 크롤러 시작하기(3)--요청을 사용하여 Zhihu API 구축

이 글에서는 python 크롤러를 시작하고 요청을 사용하여 ZhihuAPI를 구축하는 방법에 대한 관련 정보를 주로 소개합니다. 모든 사람에게 큰 도움이 됩니다. 필요한 참고 자료와 학습 가치가 있는 친구는 아래를 살펴보세요.

Preface

크롤러 시리즈 기사 우아한 HTTP 라이브러리 요청에서 요청 사용을 소개했습니다. 이번에는 요청을 사용하여 라이브러리를 구축합니다. Hu API의 기능에는 비공개 메시지 보내기, 기사 좋아요, 사용자 팔로우 등이 포함됩니다. 사용자 작업과 관련된 모든 기능에는 로그인이 필요하므로 이 기사를 읽기 전에 Python을 이해하여 Zhihu 로그인을 시뮬레이션하는 것이 좋습니다. 이제 요청을 사용하여 Zhihu 로그인을 시뮬레이션하는 방법을 이미 알고 있다고 가정합니다.

Thinking Analysis

개인 메시지를 보내는 과정은 브라우저가 서버에 HTTP 요청을 보내는 것입니다. 요청 URL, 요청 헤더Header 및 요청 본문이 명확하다면 요청을 사용하여 비공개 메시지를 보내는 브라우저를 쉽게 시뮬레이션할 수 있습니다.

Chrome 브라우저를 열고 임의의 사용자를 찾은 다음 클릭하여 비공개 메시지를 보내고 비공개 메시지의 네트워크 요청 프로세스를 추적하세요.

요청 헤더 정보를 먼저 살펴보세요

@

요청 헤더 헤더에는 cookies의 로그인 정보가 포함되어 있으며, 또한, 사용자 인증에 사용되는 인증 필드도 있습니다. 동시에 이 필드도 쿠키에 저장됩니다(쿠키 정보가 유출되는 것을 방지하기 위해 이 정보를 모자이크로 처리해야 합니다). 요청이 요청될 때.

요청 URL을 살펴보고 요청 body

@

요청 URL은 www.zhihu.com/api/입니다. v4/messages , 요청 방법은 POST, 요청 body

{"type":"common","content":"你好,我是pythoner","receiver_hash":"1da75b85900e00adb072e91c56fd9149"}

요청 본문은 json 문자열이고 유형과 내용은 이해하기 쉽지만 Receiver_hash가 무엇인지, 무엇이 필요한지 모르겠습니다. 더 자세히 결정되지만 이것이 사용자 ID와 유사한 필드라고 추측해야 합니다.

이제 문제는 사용자 홈페이지의 URL을 통해 사용자 ID를 어떻게 찾는가 하는 것입니다. 개인 메시지의 전체 과정을 완벽하게 시뮬레이션하기 위해 특별히 Zhihu 계정을 등록했습니다.

여분의 휴대전화 번호가 없으면 Google을 사용하여 '온라인으로 SMS 수신'을 검색할 수 있습니다. 인터넷에는 무료 온라인 문자 메시지 수신을 제공하는 휴대전화 번호가 많이 있습니다. 내 등록 계정 홈페이지: https://www.zhihu .com/people/xiaoxiaodouzi

먼저 트럼펫 계정을 팔로우한 다음 마우스를 움직이면 내가 팔로우하는 목록에서 트럼펫 계정을 찾습니다. 트럼펫 계정의 아바타에 HTTP 네트워크 요청이 있음을 발견했습니다.

요청 URL은 www.zhihu.com/api/v4/members/xiaoxiaodouzi입니다. 이 URL "xiaoxiaodouzi"의 뒷부분은 Xiaoxiao의 뒷부분에 해당합니다. 홈페이지 URL입니다. 이 부분을 url_token이라고 합니다.

인터페이스의 반환 데이터는 사용자의 개인 공개 정보입니다.

{ 
 ...
 "id":"1da75b85900e00adb072e91c56fd9149",
 "favorite_count":0,
 "voteup_count":0,
 "commercial_question_count":0,
 "url_token":"xiaoxiaodouzi",
 "type":"people",
 "avatar_url":"https://pic1.zhimg.com/v2-ca13758626bd7367febde704c66249ec_is.jpg",
 "is_active":1492224390,
 "name":"\u6211\u662f\u5c0f\u53f7",
 "url":"http://www.zhihu.com/api/v4/people/1da75b85900e00adb072e91c56fd9149",
 "gender":-1
 ...
}

앞서 짐작했듯이 비공개 메시지의 receive_hash 필드는 사용자의 ID 필드가 있음을 분명히 알 수 있습니다.

코드 구현

이제 비공개 메시지 기능에 대한 아이디어를 명확히 했으며 코드 구현은 당연한 문제입니다.

사용자 정보

개인 메시지 인터페이스에 필요한 receive_hash 사전을 얻으려면 먼저 사용자 정보를 얻어야 합니다. 값에 대한 ID를 포함합니다.


@need_login
def user(self, url_token):
 """
 获取用户信息,
 :param url_token:
 url_token 是用户主页url中后面部分
 例如: https://www.zhihu.com/people/xiaoxiaodouzi
 url_token 是 xiaoxiaodouzi
 :return:dict
 """
 response = self._session.get(URL.profile(url_token))
 return response.json()

비공개 메시지 보내기

@need_login
def send_message(self, user_id, content):
 """
 给指定的用户发私信
 :param user_id: 用户ID
 :param content: 私信内容
 """
 data = {"type": "common", "content": content, "receiver_hash": user_id}
 response = self._session.post(URL.message(), json=data)
 data = response.json()
 if data.get("error"):
 self.logger.info("私信发送失败, %s" % data.get("error").get("message"))
 else:
 self.logger.info("发送成功")
 return data

위의 두 가지 메소드는 Zhihu라는 클래스에 배치됩니다. 관련된 @need_login은 사용자 인증 데코레이터로, 이 방법이 작동하려면 로그인이 필요함을 나타냅니다. 주의 깊게 살펴보면 init.py 메서드에서 헤더 필드를 초기화했기 때문에 각 요청에서 헤더 필드를 명시적으로 지정하지 않았다는 것을 알 수 있습니다.

def init(self):
 self._session = requests.session()
 self._session.verify = False
 self._session.headers = {"Host": "www.zhihu.com",
    "Referer": "https://www.zhihu.com/",
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36'
      ' (KHTML, like Gecko) Chrome/56.0.2924.87',
    }
 self._session.cookies = cookiejar.LWPCookieJar(filename=cookie_filename)
 try:
 self._session.cookies.load(ignore_discard=True)
 except:
 pass

전화해서 실행하세요

from zhihu import Zhihu

if name == 'main':
 zhihu = Zhihu()
 profile = zhihu.user("xiaoxiaodouzi")
 _id = profile.get("id")
 zhihu.send_message(_id, "你好,这是来自Python之禅的问候")

실행이 완료된 후 트럼펫은 제가 보낸 비공개 메시지를 성공적으로 받았습니다.

@

마지막으로 유사한 아이디어를 따라 사용자 팔로우 및 좋아요 제공과 같은 기능을 구현할 수 있습니다.

【관련 권장 사항】

1. Python 크롤러 소개(5)--정규 표현식 예제 tutorial

2. Python 크롤러 소개(4)--HTML 텍스트 파싱 라이브러리 BeautifulSoup

3 Python 크롤러 소개(2)-HTTP 라이브러리 요청

4. Python 크롤러 소개(1)--HTTP 프로토콜을 빠르게 이해합니다

5. Python 크롤러를 사용하여 Zhihu를 시뮬레이션하는 예를 공유합니다. 로그인

위 내용은 Python 크롤러 시작하기(3)--요청을 사용하여 Zhihu API 구축의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
详细讲解Python之Seaborn(数据可视化)详细讲解Python之Seaborn(数据可视化)Apr 21, 2022 pm 06:08 PM

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于Seaborn的相关问题,包括了数据可视化处理的散点图、折线图、条形图等等内容,下面一起来看一下,希望对大家有帮助。

详细了解Python进程池与进程锁详细了解Python进程池与进程锁May 10, 2022 pm 06:11 PM

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于进程池与进程锁的相关问题,包括进程池的创建模块,进程池函数等等内容,下面一起来看一下,希望对大家有帮助。

Python自动化实践之筛选简历Python自动化实践之筛选简历Jun 07, 2022 pm 06:59 PM

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于简历筛选的相关问题,包括了定义 ReadDoc 类用以读取 word 文件以及定义 search_word 函数用以筛选的相关内容,下面一起来看一下,希望对大家有帮助。

归纳总结Python标准库归纳总结Python标准库May 03, 2022 am 09:00 AM

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于标准库总结的相关问题,下面一起来看一下,希望对大家有帮助。

Python数据类型详解之字符串、数字Python数据类型详解之字符串、数字Apr 27, 2022 pm 07:27 PM

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于数据类型之字符串、数字的相关问题,下面一起来看一下,希望对大家有帮助。

分享10款高效的VSCode插件,总有一款能够惊艳到你!!分享10款高效的VSCode插件,总有一款能够惊艳到你!!Mar 09, 2021 am 10:15 AM

VS Code的确是一款非常热门、有强大用户基础的一款开发工具。本文给大家介绍一下10款高效、好用的插件,能够让原本单薄的VS Code如虎添翼,开发效率顿时提升到一个新的阶段。

详细介绍python的numpy模块详细介绍python的numpy模块May 19, 2022 am 11:43 AM

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于numpy模块的相关问题,Numpy是Numerical Python extensions的缩写,字面意思是Python数值计算扩展,下面一起来看一下,希望对大家有帮助。

python中文是什么意思python中文是什么意思Jun 24, 2019 pm 02:22 PM

pythn的中文意思是巨蟒、蟒蛇。1989年圣诞节期间,Guido van Rossum在家闲的没事干,为了跟朋友庆祝圣诞节,决定发明一种全新的脚本语言。他很喜欢一个肥皂剧叫Monty Python,所以便把这门语言叫做python。

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

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

MinGW - Windows용 미니멀리스트 GNU

MinGW - Windows용 미니멀리스트 GNU

이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

Atom Editor Mac 버전 다운로드

Atom Editor Mac 버전 다운로드

가장 인기 있는 오픈 소스 편집기

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

VSCode Windows 64비트 다운로드

VSCode Windows 64비트 다운로드

Microsoft에서 출시한 강력한 무료 IDE 편집기