爬虫:网页爬取

爬虫:网页爬取

一、requests模块

1、下载requests库:pip install requests

2、新建py文件,导入requests库

import requests

3、 查看数据是否在源代码中

4、复制网址

url = "https://wenku.baidu.com/"

5、查看请求方式

1)在页面点击“检查”
2)选择“Network”网络
3)选择"Doc"当前页面的请求,刷新
4)点击出现的请求
5)查看“Headers”里面的“General”下的“Request Method”里面的请求方式

6、发送请求

response = requests.get(url)

7、赋值编码

response.encoding = "utf-8"

8、打印响应的状态码

print(response.status_code)   # 200

9、打印响应的数据类型

print(response.headers["content-type"])    # text/html; charset=utf-8

10、打印请求的编码

print(response.encoding)    # utf-8

11、打印网页源代码

print(response.text)

12、获取字节

print(response.content)    # b  二进制 

注:抓取图片、歌曲、视频等,媒体文件就用content

13、打印响应头信息

print(response.headers)

14、打印请求头信息

print(response.request.headers)

二、如何下载一张图片

1、导入requests库

import requests

2、查看请求方式

3、复制图片链接

url = "http://www.gdsh119.com/images/logo.png"

4、发起请求并获取数据

resp = requests.get(url).content

5、打印图片字节信息

print(resp)

6、保存图片

with open("./img/"+"img.png","wb") as f:
    f.write(resp)

注:图片、视频等媒体文件都用wb

三、发送携带headers的请求

为什么要携带headers?

需要伪装成客户端去欺骗服务端,以此来获取数据

import requests
url = "https://wenku.baidu.com/"
# headers是一个字典对象
# 伪装请求头 request headers 信息
headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36"}
# 添加herders进请求中
# 发送请求并获取数据
resp = requests.get(url,headers=headers)
# 查询请求头信息
print(resp.request.headers)
print(resp.text)

四、发送携带参数的请求

方法一:直接添加网址链接

import requests

url = "https://image.baidu.com/search/index?tn=baiduimage&word=%E6%98%A5%E5%A4%A9"

# 定义一个请求头,把爬虫伪装成浏览器
headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36"}

# 发送请求并获取数据
resp = requests.get(url,headers=headers)

# 指定编码格式
resp.encoding = "utf-8"
print(resp.text)

方法二:把参数用字典的形式进行添加

import requests

# 参数的形式也是一个字典
url = "https://image.baidu.com/search/index?tn=baiduimage&"

# 定义一个字典,里面是参数
kw = {"word":"春天"}

# 定义一个请求头,把爬虫伪装成浏览器
headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36"}

# 发送请求并获取数据
resp = requests.get(url,headers=headers,params=kw)

# 指定编码格式
resp.encoding = "utf-8"
print(resp.text)

方法三:把参数转换成url参数的形式进行拼接

from urllib.parse import urlencode
import requests

# 定义一个字典,里面是参数
kw = {"word":"春天"}

# 定义一个请求头,把爬虫伪装成浏览器
headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36"}

# urlencode 可以将字典对象转换成url的请求参数并进行拼接
url = "https://image.baidu.com/search/index?tn=baiduimage&"+urlencode(kw)

# 发送请求并获取数据
resp = requests.get(url,headers=headers)

# 指定编码格式
resp.encoding = "utf-8"
print(resp.text)

五、代理ip

import requests
# proxies类型:字典
url = "http://httpbin.org/ip"     # ---->显示当前电脑的ip
# 替换ip
# 格式:自定义变量 = {"http":"协议+代理ip:端口"}
proxies = {"http":"http://182.34.206.193:25624"}
resp = requests.get(url,proxies=proxies)
print(resp.text)      # ---->显示当前电脑的ip
import requests
url = "https://www.baidu.com"
# 设置代理ip   ---> 防止自己的ip泄露
proxies = {"http":"http://182.34.206.193:25624"}
# 发送请求的时候,替换ip
resp = requests.get(url,proxies=proxies)
print(resp.text)
posted @ 2022-05-26 16:28  猪腩飞了天  阅读(268)  评论(0编辑  收藏  举报