爬虫-requests和Selenium

1、了解requests的功能

1.1 使用post和get发送请求

HTTP中常见发送网络请求的方式有两种,GET和POST。GET是从指定的资源请求数据,POST是向指定的资源提交要被处理的数据。

GET的用法:

python 复制代码
import requests

r = requests.get("https://www.baidu.com/")
r = r.text
print(r)

运行结果:

POST的用法:

python 复制代码
import requests

r = requests.post("http://httpbin.org/post", data = {'key':'value'})
r = r.text
print(r)

运行结果:

1.2 设置超时

在请求时给timeout一个值,单位是秒,如果请求时间超过这个值,自动断开。

python 复制代码
import requests

r = requests.get("https://github.com/", timeout=1)
这个成功
python 复制代码
import requests

r = requests.get("https://github.com/", timeout=0.0001)
这个失败

1.3改变编码方式

python 复制代码
import requests

r = requests.get("https://www.baidu.com/")
print(r.encoding)
print(r.text)
r.encoding='utf-8'
print(r.encoding)
print(r.text)

输出结果:

1.4 设置代理IP

爬虫一般是是以每次分钟数百次甚至上万次的频率访问目标网站,如果爬虫是进行长时间的大量爬取工作的话,一定要给爬虫配置代理IP,否则会被ban。

2、自动化测试工具Selenium

2.1 Selenium安装

在PyCharm中的终端里面输入

python 复制代码
  pip install selenium

Selenium需要使用浏览器里面的driver打开浏览器来进行交互。

这里讲一下webdriver的安装(Edge为例),火狐浏览器还需要安装geckodriver。

记住这个版本号

然后打开这个网站:Microsoft Edge WebDriver |Microsoft Edge 开发人员

然后点击开始下载,把解压出来的exe文件复制到与python.exe同一个文件夹下

在pycharm中运行下面的代码:

python 复制代码
import time
from selenium import webdriver

browser = webdriver.Edge()
browser.get("http://www.baidu.com")
time.sleep(10)

如果弹出百度的网页,则安装成功。

2.2 使用Selnium爬取网站

可以执行下面的代码感受一下:

python 复制代码
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.edge.service import Service
import time

service = Service("E:/ana3/msedgedriver.exe")  # 指定驱动程序的位置
driver = webdriver.Edge(service=service)  # 创建驱动的实例
driver.get("http://www.python.org")  # 发送请求到指定的 URI
if "Python" in driver.title:  # 检查页面标题是否包含 "Python"
    print("ok")  # 如果包含,输出 "ok"

elem = driver.find_element(By.NAME, "q")  # 找到参数名为 q 的输入框
elem.clear()  # 清空输入框
elem.send_keys("python")  # 输入文字
elem.send_keys(Keys.RETURN)  # 按回车发送

time.sleep(5)  # 保留浏览器窗口 5 秒

driver.close()  # 关闭浏览器,释放内存

2.3 Selenium元素定位

我之后单独出一期

相关推荐
FatHonor42 分钟前
【golang学习之旅】使用VScode安装配置Go开发环境
vscode·学习·golang
Edward111111111 小时前
3月24 内部类
学习
我不是程序猿儿1 小时前
【嵌入式】适合 STM32 初学者BootLoader 入门学习心得
linux·stm32·单片机·嵌入式硬件·学习
液态不合群2 小时前
一文学习 Spring 声明式事务源码全流程总结
java·学习·spring
云边散步2 小时前
godot2D游戏教程系列二(20)
笔记·学习·音视频
CyanMind2 小时前
IsaacLab 训练范式探索(二):从“上帝视角”到实机落地的蒸馏学习
学习
吃个糖糖2 小时前
Open3D学习点云读取与显示
学习
DANGAOGAO2 小时前
Transformer学习
深度学习·学习·transformer
电子云与长程纠缠2 小时前
Godot学习04 - UI界面
学习·ui·godot
少许极端2 小时前
算法奇妙屋(三十五)-贪心算法学习之路 2
学习·算法·贪心算法