欢迎光临散文网 会员登陆 & 注册

千锋教育python数据分析教程200集,Python数据分析师入门必备视频

2023-07-22 09:32 作者:秋枫含蓝  | 我要投稿

爬虫流程梳理

import requests 
from bs4 import BeautifulSoup

# 指定url
url 来源 网址栏 数据中解析获取
# 发请求 接响应
response = requests.get(url)
# 获取的内容 响应状态码 文本数据 字节数据 编码 内容 服务器响应的编码
# 判断响应是否成功
if response.status_code == 200:
 # 获取响应数据
 # 如果是对 图片连接 视频链接 音频链接发请求 响应的数据字节数据 response.content 保存 
 # 文本数据 data = response.text
 # 解析数据 数据 加载进美丽的汤
 data_html = BeautifulSoup(文本数据data,解析器'html.parser')
 # 获取数据 select(css选择器语法) select_one 
 id #属性值
 class .属性值
 标签名 
 包含 > 空格
 其他属性选择器 选择器[属性名=值]
 结构选择器 :first-child :last-child :nth-child(2) 
 
 # 获取标签之间的文本数据 标签.text
 # 获取标签的属性值 标签.attrs.get(属性名) 
else:
 响应失败

python操作excel

使用的python中的模块 import openpyxl 
excel 组成 
 工作簿 一个工作簿中可以有多张工作表 自带一张工作表 Sheet
 工作表 包含多个单元格 行列确定某个单元格 

selenium的使用

需要一个模块 import selenium

驱动浏览器打开页面

相对于requests的优点 不管数据是否是静态的还是动态 只要页面上有 就能获取

打开浏览器

from selenium import webdriver
 
# 浏览器的初始化
browser = webdriver.Chrome()
# 发送请求
browser.get('https://www.baidu.com/')
 
# 打印页面的标题
print(browser.title)
 
# 退出模拟浏览器
browser.quit() # 一定要退出!不退出会有残留进程

无界面模式

from selenium import webdriver
 
# 1. 实例化配置对象
chrome_options = webdriver.ChromeOptions()
# 2. 配置对象添加开启无界面命令
chrome_options.add_argument('--headless')
# 3. 配置对象添加禁用gpu命令
chrome_options.add_argument('--disable-gpu')
# 4. 实例化带有配置对象的browser 对象
browser = webdriver.Chrome(chrome_options=chrome_options)
 
browser.get('https://www.baidu.com/')
 
# 查看请求的数据
print(browser.page_source) # 查看渲染后的数据,就可以Xpath进行解析获取数据了
print(browser.get_cookies()) # 查看请求页面后的cookies值
print(browser.current_url) # 查看请求url
 
# 关闭页面
browser.close()
# 关闭浏览器
browser.quit()

元素定位

from selenium import webdriver
from selenium.webdriver.common.by import By
 
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--headless')
browser = webdriver.Chrome(chrome_options=chrome_options)
url = 'https://www.xxx.com/'
browser.get(url)
html_str = browser.page_source


from selenium.webdriver.common.by import By
 
# 获取第一个元素
browser.find_element(by=By.ID, value="list-1")
# 获取多个元素
browser.find_elements(by=By.ID, value="list-1")

元素操作

ret = browser.find_element_by_class_name('element').text
print(ret[0].text)

ret = browser.find_element_by_tag_name('a').get_attribute('href')
print(ret[0].get_attribute('href'))

前进后退

# 前进
browser.forward()
 
# 后退 
browser.back()

执行js

from selenium import webdriver
 
browser = webdriver.Chrome()
url = 'https://www.baidu.com/'
browser.get(url)
 
js = 'window.scrol1To(O,document.body.scrollHeight)' # js语句
browser.execute_script(js) # 执行js的方法
 
browser.quit()

页面等待

  • 隐式等待
隐式等待针对的是元素定位,隐式等待设置了一个时间,在一段时间内判断元素是否定位成功,如果完成了,就进行下一步。在设置的时间内没有定位成功,则会报超时加载


from selenium import webdriver
 
driver = webdriver.Chrome()
driver.implicitly_wait(10) # 隐式等待10秒
driver.get('https://www.baidu.com/')
myDynamicElement = driver.find_element_by_id("input")
  • 显示等待
显式确定等待指定某个元素,然后设置最长等待时间。如果在这个时间还没有找到元素,那么便会抛出异常了。


from selenium import webdriver
from selenium.webdriver.common.by import By
# WebDriverWait 库,负责循环等待
from selenium.webdriver.support.ui import WebDriverWait
# expected_conditions 类,负责条件出发
from selenium.webdriver.support import expected_conditions as EC
 
driver = webdriver.Chrome()
driver.get('https://www.baidu.com/')
try:
 # 页面一直循环,直到 id="input" 出现
 element = WebDriverWait(driver, 10).until(
   EC.presence_of_element_located((By.ID, "input"))
 )
finally:
 driver.quit()

使用代理IP

from selenium import webdriver
import time
 
# 1. 实例化配置对象
options = webdriver.ChromeOptions()
# 2. 配置对象添加使用代理ip的命令
options.add_argument('--proxy-server=http://ip地址') # 代理IP:端口号
# 3. 实例化带有配置对象的driver对象
driver = webdriver.Chrome(chrome_options=options)
driver.get("https://www.baidu.com")
 
# 获取页面内容
print(driver.page_source)
 
# 延迟3秒后关闭当前窗口,如果是最后一个窗口则退出
time.sleep(3)
driver.close()

修改请求头

用于伪装请求头

from selenium import webdriver
import time
 
agent = 'Mozilla/5.0 (iPad; CPU OS 11_0 like Mac OS X) AppleWebKit/604.1.34 (KHTML, like Gecko) Version/11.0 Mobile/15A5341f Safari/604.1'
# 1. 实例化配置对象
options = webdriver.ChromeOptions()
# 2. 配置对象修改请求头
options.add_argument('--user-agent=' + agent)
# 3. 实例化带有配置对象的driver对象
driver = webdriver.Chrome(chrome_options=options)
driver.get("https://www.baidu.com")
 
# 获取页面内容
print(driver.page_source)
 
# 延迟3秒后关闭当前窗口,如果是最后一个窗口则退出
time.sleep(3)
driver.close()


千锋教育python数据分析教程200集,Python数据分析师入门必备视频的评论 (共 条)

分享到微博请遵守国家法律