鱼C论坛

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

[已解决]使用selenium爬取网站信息,求助

[复制链接]
发表于 2022-4-3 15:16:17 | 显示全部楼层 |阅读模式

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

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

x
我使用语句list_YibNq = web.find_elements(by=By.XPATH,value='//*[@id="jobList"]/div[1]'),该语句本应该获取大量数据,但为什么每次只能获取到第一条?
源代码如下:
"""
1.使用selenium打开谷歌浏览器访问网站‘lagou.com’
2.点击全国,并在输入框输入‘python’
3.将页面上的公司名称,职位名称,薪资打印出来
"""
from selenium.webdriver import Chrome
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time
web = Chrome()
web.get('http://lagou.com')
#找到某个元素,点击它
el = web.find_element(by=By.XPATH,value='//*[@id="changeCityBox"]/p[1]/a')
el.click()
#找到输入框,输入python,=》输入回车/点击搜索按钮
web.find_element(by=By.XPATH,value='//*[@id="search_input"]').send_keys("python",Keys.ENTER)
time.sleep(1)
#查找数据存放的位置,对数据进行提取
list_YibNq = web.find_elements(by=By.XPATH,value='//*[@id="jobList"]/div[1]')
print(len(list_YibNq))
#for item in list_YibNq:
    #job_name = item.find_element(by=By.XPATH,value='./div/div/div/div/a').text
    #job_price = item.find_element(by=By.XPATH,value='./div/div/div/div[2]/span').text
    #company_name = item.find_element(by=By.XPATH,value='./div/div/div[2]/div/a').text
   # print(company_name,job_name,job_price)
最佳答案
2022-4-4 10:40:33
  1. from selenium.webdriver import Chrome
  2. from selenium.webdriver.common.by import By
  3. from selenium.webdriver.common.keys import Keys
  4. import time
  5. web = Chrome()
  6. web.get('http://lagou.com')
  7. #找到某个元素,点击它
  8. el = web.find_element(by=By.XPATH,value='//*[@id="changeCityBox"]/p[1]/a')
  9. el.click()
  10. #找到输入框,输入python,=》输入回车/点击搜索按钮
  11. web.find_element(by=By.XPATH,value='//*[@id="search_input"]').send_keys("python",Keys.ENTER)
  12. time.sleep(1)
  13. #查找数据存放的位置,对数据进行提取
  14. list_YibNq = web.find_elements(by=By.XPATH,value='//*[@id="jobList"]/div[1]/div')                          # for 循环里减少一个 div 放到这里来
  15. print(len(list_YibNq))
  16. for item in list_YibNq:
  17.     job_name = item.find_element(by=By.XPATH,value='./div/div/div/a').text
  18.     job_price = item.find_element(by=By.XPATH,value='./div/div/div[2]/span').text
  19.     company_name = item.find_element(by=By.XPATH,value='./div/div[2]/div/a').text
  20.     print(company_name,job_name,job_price)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-4-3 19:50:30 | 显示全部楼层

回帖奖励 +2 鱼币

list_YibNq = web.find_elements(by=By.XPATH,value='//*[@id="jobList"]/div[1]') 把那个 [1] 去掉
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-4-4 09:58:22 | 显示全部楼层
isdkz 发表于 2022-4-3 19:50
list_YibNq = web.find_elements(by=By.XPATH,value='//*[@id="jobList"]/div[1]') 把那个 [1] 去掉

试过了,但还是不好使呀
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-4-4 09:59:57 | 显示全部楼层
莫凡辰 发表于 2022-4-4 09:58
试过了,但还是不好使呀

好吧,那我帮你调试一下
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-4-4 10:31:56 | 显示全部楼层
isdkz 发表于 2022-4-4 09:59
好吧,那我帮你调试一下

多谢大佬
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-4-4 10:39:53 | 显示全部楼层
isdkz 发表于 2022-4-4 09:59
好吧,那我帮你调试一下

大佬,我刚刚发现问题在哪了,现在已经解决了,多谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-4-4 10:40:33 | 显示全部楼层    本楼为最佳答案   
  1. from selenium.webdriver import Chrome
  2. from selenium.webdriver.common.by import By
  3. from selenium.webdriver.common.keys import Keys
  4. import time
  5. web = Chrome()
  6. web.get('http://lagou.com')
  7. #找到某个元素,点击它
  8. el = web.find_element(by=By.XPATH,value='//*[@id="changeCityBox"]/p[1]/a')
  9. el.click()
  10. #找到输入框,输入python,=》输入回车/点击搜索按钮
  11. web.find_element(by=By.XPATH,value='//*[@id="search_input"]').send_keys("python",Keys.ENTER)
  12. time.sleep(1)
  13. #查找数据存放的位置,对数据进行提取
  14. list_YibNq = web.find_elements(by=By.XPATH,value='//*[@id="jobList"]/div[1]/div')                          # for 循环里减少一个 div 放到这里来
  15. print(len(list_YibNq))
  16. for item in list_YibNq:
  17.     job_name = item.find_element(by=By.XPATH,value='./div/div/div/a').text
  18.     job_price = item.find_element(by=By.XPATH,value='./div/div/div[2]/span').text
  19.     company_name = item.find_element(by=By.XPATH,value='./div/div[2]/div/a').text
  20.     print(company_name,job_name,job_price)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-4-4 10:41:06 | 显示全部楼层
莫凡辰 发表于 2022-4-4 10:39
大佬,我刚刚发现问题在哪了,现在已经解决了,多谢

好吧
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-29 08:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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