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

遇到的问题 Selenium需要安装geckodriver

from selenium import webdriver
from selenium.webdriver.common.by import By
from time import sleep
from selenium.webdriver.support.ui import Select
import openpyxl as op
import selenium 

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

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

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

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

driver.back()

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

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

 最后获得数据

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值