Python复健知识点:动态网页数据爬取基础知识

[以下均为个人理解](可能欠缺一定的严谨性)
动态网页概念:页面代码虽然没有变,但是显示的内容却是可以随着时间、环境或者数据库操作的结果而发生改变 eg:小饭桌[url:https://www.xfz.cn/]
在这里插入图片描述
点击查看更多后加载了新的内容。
但即使AJAX加载的数据使用了JSON将数据渲染到页面中,仍是无法通过查看网页源代码看到新加载的数据
在这里插入图片描述
在这里插入图片描述
动态网页通常通过AJAX(Asynchronouse JavaScript And XML)既异步JavaScript 和 XML。在不重新加载整个页面的情况下,对网页某部分进行更新,既通过后台与服务器进行少量数据交换,实现异步更新。
[注:通常现在的数据交互基本都是使用JSON]

所以本文使用Selenium+chromedriver获取动态数据
[Selenium相当于是一个机器人。可以模拟人类在浏览器上的一些行为,自动处理浏览器上的一些行为,比如点击,填充数据,删除cookie等]

基本框架和操作语句
from selenium import webdriver
#导入
driver_path = r’D:\python_space\new_programapp\chromedriver.exe’
#绝对路径
driver = webdriver.Chrome(executable_path=driver_path)
#初始化一个driver,并且指定chromedriver的路径
driver.get(“https://www.baidu.com/”)
#请求并自动打开网站

print(driver.page_source)
#通过page_source获取网页源代码

driver.close():关闭当前页面。
driver.quit():退出整个浏览器。

selenium定位元素常用操作 [以百度为例]
在这里插入图片描述
定位输入框
在这里插入图片描述
可通过id,class_name,name,tag_name,xpath,css_selector查找元素 eg:
driver.get(“https://www.baidu.com/”)
[inputTag = driver.find_element_by_id(‘kw’)]
==[inputTag = driver.find_element(By.ID,‘kw’)] (from selenium.webdriver.common.by import By)
inputTag.send_keys(‘python’)
#给文本框输入’python’
inputTag.clear()
#清除输入框中的内容

checkbox相应操作:eg:
在这里插入图片描述
在这里插入图片描述
进行点击操作
rememberTag = driver.find_element_by_name(“remember”)
rememberTag.click() #点击
rememberTag.click() #再次点击既取消

选择select eg:
在这里插入图片描述
在这里插入图片描述
[url:http://www.95yueba.com/index.php?route=product/category&path=59]

from selenium.webdriver.support.ui import Select
#选中这个标签,然后使用Select创建对象
selectTag = Select(driver.find_element_by_id(“input-limit”))
#根据索引选择
selectTag.select_by_index(1)
#根据值选择
==selectTag.select_by_value(“http://www.95yueba.com/index.php?route=product/category&path=59&limit=25”)
#根据可视的文本选择
==selectTag.select_by_visible_text(“25”)
在这里插入图片描述
selectTag.deselect_all()
#取消选中所有选项
[注:有下拉框即为select类型]

切换页面
#打开一个新的页面
driver.execute_script(“window.open(’”+url+"’)")
在这里插入图片描述

#切换到这个新的页面中
driver.switch_to_window(driver.window_handles[0])
在这里插入图片描述
设置代理ip:
options = webdriver.ChromeOptions()
options .add_argument (" –proxy-server=http:// 110.73.2.248:8123")
driver_path = r"D:\python_space\new_programapp\chromedriver.exe"
driver=webdriver.Chrome(executable_path=driver_path,chrome_options=options)

常见WebElement元素:
from selenium.webdriver.remote.webelement import WebElement

drive.save_screentshot(‘文件名.png’):获取当前页面的截图。
drive.get_attribute(“value”):这个标签的某个属性的值。(百度一下)
在这里插入图片描述
eg:submitBtn=driver.find_element_by_id(‘su’)
driver.save_screenshot(‘baidu.png’)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值