excel抓取网页动态数据(第一时间送达76套java从入门到精通实战课程分享 )
优采云 发布时间: 2022-04-13 12:29excel抓取网页动态数据(第一时间送达76套java从入门到精通实战课程分享
)
点击上方蓝色字体,选择“明星公众号”
优质文章,第一时间发货
76套java课程从入门到精通实战
前言
第一篇文章文章发在CSDN,时隔两年,终于实现了自由爬微博!本文可以解决微博预登录、识别“展开全文”、抓取完整数据、翻页设置等问题。由于新接触爬虫,有些术语可能用错了,请指正!
一、动态爬虫和静态爬虫的区别
1、静态网页
静态网页是纯HTML,无后台数据库,无程序,无交互,体积小,加载速度快。静态网页的抓取只需要四个步骤:发送请求、获取相应内容、解析内容和保存数据。
2、动态网页
动态网页上的数据会随着时间和用户交互而变化,所以数据不会直接呈现在网页的源代码中,数据会以Json的形式保存。所以动态网页比静态网页多了一个步骤,就是需要渲染才能获取相关数据。
3、如何区分动态和静态网页
加载网页后,右键选择“查看网页源代码”。如果网页上的大部分字段都出现在源代码中,那么这是一个静态网页,否则就是一个动态网页。
二、动态爬虫的两种方法
1.逆向分析爬取动态网页
调度资源对应的URL适用的数据为json格式,Javascript触发调度。主要步骤是获取待调度资源对应的URL——访问URL获取资源的数据。(这里不详细解释)
2.使用Selenium库爬取动态网页
使用 Selenium 库,它使用 JavaScript 来模拟真实用户对浏览器所做的事情。本案将采用这种方法。
三、安装 Selenium 库并下载浏览器补丁
1.可以使用 pip 工具安装 Selenium 库。
2.下载与您的 Chrome 浏览器版本匹配的浏览器补丁。
Step1:检查Chrome的版本
Step2:去下载对应版本的浏览器补丁。网址:
Step3:解压文件并将其与python.exe放在同一个文件中
四、页面打开和预登录
1.导入 selenium 包
from selenium import webdriver
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
import time
import pandas as pd
2.打开页面
driver = webdriver.Chrome()
print('准备登陆Weibo.cn网站...')
#发送请求
driver.get("https://login.sina.com.cn/signup/signin.php")
wait = WebDriverWait(driver,5)
#重要:暂停1分钟进行预登陆,此处填写账号密码及验证
time.sleep(60)
3.使用交互操作。运行以上两个程序后,会弹出一个框。此框用于模拟网页的交互。在此框中完成登录(包括填写登录名、密码和短信验证等)
4.完成预登录后,进入个人主页
五、关键词搜索操作
1.找到上图中的关键词输入框,在框中输入搜索对象,如“好好学习”
#使用selector去定位关键词搜索框
s_input = driver.find_element_by_css_selector('#search_input')
#向搜索框中传入字段
s_input.send_keys("努力学习")
#定位搜索键
confirm_btn = driver.find_element_by_css_selector('#search_submit')
#点击
confirm_btn.click()
2.上一步代码完成后,会弹出一个新窗口,从个人主页跳转到微博搜索页面。但是驱动还是在个人主页,需要手动将驱动移动到微博搜索页面。
3.使用switch_to.window()方法进行移位
#人为移动driver
driver.switch_to.window(driver.window_handles[1])