当前位置:   article > 正文

Python Selenium爬虫,爬取翻页URL不变的网站_selenium爬url不变时

selenium爬url不变时

遇到的问题 Selenium需要安装geckodriver

  1. from selenium import webdriver
  2. from selenium.webdriver.common.by import By
  3. from time import sleep
  4. from selenium.webdriver.support.ui import Select
  5. import openpyxl as op
  6. import selenium

 这里注释content的原因是driver.back() 并没有回到上一页(未解决),而是回到了起始页,由于url不变可能是后退过程中丢失了缓存值,因此二次爬取页面内容时,是进入网址内爬取的。

  1. # 打开指定(Firefox)浏览器
  2. driver = webdriver.Firefox()
  3. # 获得指定页面
  4. driver.get("..")
  5. wb = op.Workbook() # 创建工作簿对象
  6. ws = wb['Sheet'] # 创建子表
  7. ws.append(['标题','日期','网址','内容']) # 添加表头
  8. # 页面循环 需要循环点击下一页
  9. page=1
  10. def getData():
  11. time.sleep(2)
  12. for i in range(1,11):
  13. # 通过 xpath找到title_list 这里的list 需要text
  14. title = driver.find_element(By.XPATH, '/html/body/div[5]/div/div/div[1]/div['+str(i)+']/a').text
  15. # 获得日期
  16. date = driver.find_element(By.XPATH, '/html/body/div[5]/div/div/div[1]/div['+str(i)+']/span').text
  17. # 获得网址 网址在href属性值里
  18. url = url = driver.find_element(By.XPATH, '/html/body/div[5]/div/div/div[1]/div['+str(i)+']/a').get_attribute("href")
  19. # # 找到内容按钮
  20. # content_button = driver.find_element(By.XPATH,'/html/body/div[5]/div/div/div[1]/div['+str(i)+']/a')
  21. # # 进行点击操作
  22. # content_button.click()
  23. # content_list = driver.find_elements_by_class_name('MsoNormal')
  24. # # 将content数据text写入到content
  25. # content = ""
  26. # for j in range(len(content_list)):
  27. # content = content+content_list[j].text
  28. # 将 title date url content写入到excel中 一行一行写
  29. row = title,date,url
  30. # ,content
  31. ws.append(row)
  32. wb.save('notice.xlsx')
  33. while page<= 180: # 循环页数
  34. getData()
  35. # /html/body/div[5]/div/div/div[2]/div/a[8]
  36. driver.find_element(By.XPATH,'//a[@class="layui-laypage-next"]').click()
  37. page += 1

关于driver.back() 爬取第一页时,进入内容 再driver.back(),会回到第一页(左)上。

但爬取第二页时,进入内容再driver.back(),并不会回到第二页 而是直接跳转到第一页 可能是缓存的数据丢失。

driver.back()

因此获取公告的内容是二次进行读取的

  1. data = pd.read_excel('notice.xlsx')
  2. driver = webdriver.Firefox()
  3. for i in range(0,data.shape[0]):
  4. # 发现页面在sleep(5)时不会出现加载缓慢的情况
  5. time.sleep(5)
  6. driver.get(data.loc[i,'网址'])
  7. content_list = driver.find_elements_by_class_name('content2')
  8. # 将content数据text写入到content
  9. content = ""
  10. for j in range(len(content_list)):
  11. content = content+content_list[j].text
  12. data.loc[i,'内容'] = content

 最后获得数据

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/489027
推荐阅读
相关标签
  

闽ICP备14008679号