鱼C论坛

 找回密码
 立即注册
查看: 2828|回复: 7

[已解决]selenium爬取源码

[复制链接]
发表于 2023-2-5 17:06:22 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
from selenium import webdriver
from time import sleep

from selenium.webdriver.common.by import By
from lxml import html
etree = html.etree


#创建浏览器对象
bro = webdriver.Chrome(r'D:/技能/chromedriver.exe')

bro.get('https://xiaoyuan.zhaopin.com/')

sleep(2)
bro.find_element(By.XPATH,'//*[@id="root"]/div/div[1]/div/div[1]/div[2]/a[1]').click()
sleep(5)
bro.find_element(By.XPATH,'//*[@id="root"]/div[2]/div/div/div[3]/span[2]').click()
sleep(2)
s = bro.find_element(By.XPATH,'//*[@id="search_input_one"]').send_keys('java')
sleep(1)
d = bro.find_element(By.XPATH,'//*[@id="root"]/div/div[2]/div/div/div[2]/div/span[2]').click()
sleep(1)
reponse = bro.page_source
print(reponse)


bro.quit()

大佬们,这个扫码登录后为啥爬取不到页面源码呀
最佳答案
2023-2-6 11:27:29
哈岁NB 发表于 2023-2-6 10:54
selenium不是可以直接爬取动态数据吗?

selenium 确实可以获取到渲染后的源码,我刚刚研究了一下发现智联招聘在搜索后打开了新的窗口,要切换一下窗口才可以

对你的代码修改如下:
from selenium import webdriver
from time import sleep

from selenium.webdriver.common.by import By
from lxml import html
etree = html.etree


#创建浏览器对象
bro = webdriver.Chrome(r'D:/技能/chromedriver.exe')

bro.get('https://xiaoyuan.zhaopin.com/')

sleep(2)
bro.find_element(By.XPATH,'//*[@id="root"]/div/div[1]/div/div[1]/div[2]/a[1]').click()
sleep(5)
bro.find_element(By.XPATH,'//*[@id="root"]/div[2]/div/div/div[3]/span[2]').click()
sleep(2)
s = bro.find_element(By.XPATH,'//*[@id="search_input_one"]').send_keys('java')
sleep(1)
d = bro.find_element(By.XPATH,'//*[@id="root"]/div/div[2]/div/div/div[2]/div/span[2]').click()
sleep(1)
bro.switch_to.window(bro.window_handles[-1])                            # 加这一行切换窗口
reponse = bro.page_source
print(reponse)
print('Java工程师-苏州' in reponse)

bro.quit()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-2-5 17:25:19 | 显示全部楼层
代码我测试了没有问题,你自己先走一遍流程嘛

在微信扫码登录后有一个绑定手机号的过程,问题就出在这,可能第一次登录需要绑定手机号
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-2-5 21:26:33 | 显示全部楼层
isdkz 发表于 2023-2-5 17:25
代码我测试了没有问题,你自己先走一遍流程嘛

在微信扫码登录后有一个绑定手机号的过程,问题就出在这, ...

好的,我试试
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-2-6 10:31:21 | 显示全部楼层
isdkz 发表于 2023-2-5 17:25
代码我测试了没有问题,你自己先走一遍流程嘛

在微信扫码登录后有一个绑定手机号的过程,问题就出在这, ...

我想问一下,为什么最后爬到的源码是首页的源码,而不是输入搜索java之后的源码呢

为什么源码不是这个呢

为什么源码不是这个呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-2-6 10:52:53 | 显示全部楼层
哈岁NB 发表于 2023-2-6 10:31
我想问一下,为什么最后爬到的源码是首页的源码,而不是输入搜索java之后的源码呢

因为职位信息并不在源码里面,他是通过 ajax 动态渲染上去的,


他的数据在这个请求里面:
微信图片_20230206105227.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-2-6 10:54:30 | 显示全部楼层
isdkz 发表于 2023-2-6 10:52
因为职位信息并不在源码里面,他是通过 ajax 动态渲染上去的,

selenium不是可以直接爬取动态数据吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-2-6 11:27:29 | 显示全部楼层    本楼为最佳答案   
哈岁NB 发表于 2023-2-6 10:54
selenium不是可以直接爬取动态数据吗?

selenium 确实可以获取到渲染后的源码,我刚刚研究了一下发现智联招聘在搜索后打开了新的窗口,要切换一下窗口才可以

对你的代码修改如下:
from selenium import webdriver
from time import sleep

from selenium.webdriver.common.by import By
from lxml import html
etree = html.etree


#创建浏览器对象
bro = webdriver.Chrome(r'D:/技能/chromedriver.exe')

bro.get('https://xiaoyuan.zhaopin.com/')

sleep(2)
bro.find_element(By.XPATH,'//*[@id="root"]/div/div[1]/div/div[1]/div[2]/a[1]').click()
sleep(5)
bro.find_element(By.XPATH,'//*[@id="root"]/div[2]/div/div/div[3]/span[2]').click()
sleep(2)
s = bro.find_element(By.XPATH,'//*[@id="search_input_one"]').send_keys('java')
sleep(1)
d = bro.find_element(By.XPATH,'//*[@id="root"]/div/div[2]/div/div/div[2]/div/span[2]').click()
sleep(1)
bro.switch_to.window(bro.window_handles[-1])                            # 加这一行切换窗口
reponse = bro.page_source
print(reponse)
print('Java工程师-苏州' in reponse)

bro.quit()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-2-6 11:31:39 | 显示全部楼层
isdkz 发表于 2023-2-6 11:27
selenium 确实可以获取到渲染后的源码,我刚刚研究了一下发现智联招聘在搜索后打开了新的窗口,要切换一 ...

好的好的,非常感谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-24 17:14

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表