Python requests+beautifulsoup爬虫从入门到精通(第一天)

想要用Python爬虫?从这里入手!

首先,我们得安装以下工具

requests——获取网站信息

beautifulsoup4、re(Python自带)——解析网站信息

要安装包,总少不了这个:

pip install requests beautifulsoup4

快抄代码啊!!!

然后,也少不了这个:

import requests
import re
from bs4 import BeautifulSoup

快抄代码啊!!!x2

然后,就正式开始爬虫了

requests里有一个函数——get

get网站数据

还有一个post,但我们常用get

具体区别戳下面【Python数据采集系列】一文解读requests.get()和requests.post()的区别_requests.post requests.get-CSDN博客

首先,我们来理解一下get各主要参数用法

def get(
    url: str | bytes,
    params: _Params | None = None,
    *,
    data: _Data | None = ...,
    headers: _HeadersMapping | None = ...,
    cookies: RequestsCookieJar | _TextMapping | None = ...,
    files: _Files | None = ...,
    auth: _Auth | None = ...,
    timeout: _Timeout | None = ...,
    allow_redirects: bool = ...,
    proxies: _TextMapping | None = ...,
    hooks: _HooksInput | None = ...,
    stream: bool | None = ...,
    verify: _Verify | None = ...,
    cert: _Cert | None = ...,
    json: Incomplete | None = ...,
) -> Response: ...

url:自己理解

timeout:超时时间

verify:链接是否安全

header:请求头

cookie:一种小型文本文件,记录了一些信息

请求头咋写?

对呀,请求头咋写???啥意思啊?

请求头是一个字典

浏览器请求网站页面时有请求头

浏览器打开网页,右键->检查(或者直接按F12)->网络(network)->ctrl+e->ctrl+r->随便点一个

我们主要还是使用这个user-agent,伪装成浏览器绕过某些网站的反爬限制

例如b站

错误代码:

import requests


reponse = requests.get('https://www.bilibili.com')
print(reponse.status_code)

reponse.status_code:状态码,状态码类型详见HTTP 状态码 | 菜鸟教程

输出:412

4开头的状态码, 根据上面的网址是这样说明的

原来是哔哩哔哩没给我们条件

但加个请求头就不一样了

正确代码:

import requests


header = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36 Edg/103.0.1264.44'}
reponse = requests.get('https://www.bilibili.com',headers=header)
print(reponse.status_code)

不要自己写请求头啊,直接从浏览器复制

输出200,成功了

现在我们说说reponse的各种方法

headers和url:你觉得呢

encoding:编码

text:网页HTML代码

cookies:你觉得呢 

其他就没啥了,不太常用

我们将他们一一输出

import requests


header = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36 Edg/103.0.1264.44'}
reponse = requests.get('https://www.bilibili.com',headers=header)
print(reponse.status_code)
print(reponse.text)
print(reponse.encoding)
print(reponse.url)
print(reponse.headers)
print(reponse.cookies)
D:\Program\Python\python.exe C:\Users\west5\AppData\Roaming\JetBrains\PyCharm2024.3\scratches\scratch.py 
200
<!DOCTYPE html>
<html lang="zh-CN" class="gray">
...
</html>

utf-8
https://www.bilibili.com/
{'Date': 'Wed, 29 Jan 2025 13:23:00 GMT', 'Content-Type': 'text/html; charset=utf-8', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'support': 'nantianmen', 'Set-Cookie': 'buvid3=77401650-778A-6AA8-CB5E-8641B919083880678infoc; path=/; expires=Thu, 29 Jan 2026 13:23:00 GMT; domain=.bilibili.com, b_nut=1738156980; path=/; expires=Thu, 29 Jan 2026 13:23:00 GMT; domain=.bilibili.com', 'server-timing': 'render;dur=96,total;dur=115', 'Vary': 'Origin,Accept-Encoding', 'Content-Encoding': 'gzip', 'Expires': 'Wed, 29 Jan 2025 13:22:59 GMT', 'Cache-Control': 'no-cache', 'X-Cache-Webcdn': 'BYPASS from blzone04'}
<RequestsCookieJar[<Cookie buvid3=77401650-778A-6AA8-CB5E-8641B919083880678infoc for .bilibili.com/>, <Cookie b_nut=1738156980 for .bilibili.com/>]>

(…把中间的HTML代码省掉了,实际会输出,只是我觉得太占地方了)

好了,今天先学习到这里,明天继续

大年初一,放飞着玩,别闭关修炼了!

Be continued

作者:LightingLong

物联沃分享整理
物联沃-IOTWORD物联网 » Python requests+beautifulsoup爬虫从入门到精通(第一天)

发表回复