python 写自动点击爬取数据

今天来点不一样的!哥们

提示: 这里只是用于自己学习的 ,请勿用违法地方

效果图

会进行点击下一页 进行抓取

需要其他操作也可以自己写


文章目录


前言

爬虫是指通过编程自动化地获取互联网上的信息的过程。在Python中,有许多强大的库和框架可用于实现爬虫,其中最常用的是Beautiful Soup和Requests库。

在开始编写爬虫之前,有一些重要的考虑事项:

合法性和道德性: 确保你的爬虫活动是合法的,并遵守网站的使用规定。爬虫不应该违反任何法律或侵犯隐私权。

robots.txt 文件: 在爬取网站之前,检查网站的robots.txt文件,这是网站所有者用来指导爬虫的文件。尊重这些规则以避免潜在的法律问题。

频率和速率: 控制爬虫的访问速率,以防止对服务器造成过大的负担。设置适当的延迟和间隔,以模拟真实用户的行为。

HTML基础: 了解基本的HTML结构和标签,因为大多数爬虫任务都涉及到解析HTML文档。


提示:以下是本篇文章正文内容,下面案例可供参考

一、上代码?

python 复制代码
import time

from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.by import By

url = "https://ref.cnki.net/REF/AdvSearch/Index?colName=%E8%A2%AB%E5%BC%95%E4%B8%BB%E9%A2%98&colValue=%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%A7%91%E5%AD%A6&isJump=true#toolbarDiv"

# 使用Selenium进行动态加载
driver = webdriver.Chrome()
driver.get(url)


def scrape_page():
    # 等待一些时间,确保页面加载完成
    time.sleep(5)

    # 获取当前页面高度
    page_height = driver.execute_script(
        "return Math.max(document.body.scrollHeight, document.body.offsetHeight, document.documentElement.clientHeight, document.documentElement.scrollHeight, document.documentElement.offsetHeight);")

    # 设置滚动步长
    scroll_step = 500

    # 模拟滚动
    for i in range(0, page_height, scroll_step):
        driver.execute_script("window.scrollTo(0, {});".format(i))
        time.sleep(1)  # 等待一些时间,确保内容加载

    # 获取滚动后的页面源代码
    html = driver.page_source

    # 使用BeautifulSoup解析页面内容
    soup = BeautifulSoup(html, 'html.parser')

    # 查找id为listContWrapper的div元素
    list_cont_wrapper = soup.find('div', {'id': 'listContWrapper'})

    # 如果找到了listContWrapper元素
    if list_cont_wrapper:
        # 在listContWrapper内部查找listCont和table
        list_cont = list_cont_wrapper.find('div', {'class': 'listCont'})
        table_elements = list_cont_wrapper.find_all('table')

        # 处理listCont的内容,根据实际情况进行调整选择器
        if list_cont:
            list_cont_data = list_cont.get_text(strip=True)
            print("listCont数据:", list_cont_data)

        # 遍历每个表格元素
        for table_element in table_elements:
            # 提取表格中的数据,可以根据实际情况进一步调整选择器
            rows = table_element.find_all('tr')
            for row in rows:
                # 提取每行中的单元格数据
                cells = row.find_all(['td', 'th'])
                row_data = [cell.get_text(strip=True) for cell in cells]
                print("表格行数据:", row_data)
    else:
        print("未找到id为listContWrapper的div元素")


# 初始抓取
scrape_page()

# 循环点击下一页按钮,直到没有下一页为止
while True:
    try:
        # 找到下一页按钮并点击
        next_page_button = driver.find_element(By.XPATH, '//a[@class="next"]')
        next_page_button.click()

        # 继续抓取下一页
        scrape_page()
    except NoSuchElementException:
        print("没有找到下一页按钮,退出循环。")
        break
# 关闭驱动
driver.quit()

总结

我这个是抓取然后进行点击然后又进行抓取,还挺好玩,

要弄其他的都是这种格式模板

啊哈~~~

相关推荐
Polar__Star5 分钟前
golang如何实现Trie前缀树_golang Trie前缀树实现解析
jvm·数据库·python
悟空爬虫-彪哥6 分钟前
2026 Python UI 框架选择指南:从 Streamlit 到 Pyside6 的四层体系
开发语言·python·ui
weixin_408717778 分钟前
SQL中JOIN不同存储引擎表的影响_索引兼容性与查询性能评估
jvm·数据库·python
qq_189807039 分钟前
如何让导航栏的下落动画效果更慢?
jvm·数据库·python
梦无矶9 分钟前
快速设置uv默认源为国内镜像
数据库·redis·后端·python·uv
m0_5150984211 分钟前
HTML函数在低分辨率屏幕能正常编写吗_显示硬件最低适配说明【方法】
jvm·数据库·python
m0_7489203615 分钟前
如何利用宝塔面板设置网站限流策略_防止恶意高并发请求
jvm·数据库·python
bigcarp17 分钟前
windows server 2012上安装EdgeWebView2以支持pywebview项目
python
测试员周周17 分钟前
【CrewAI系列2】CrewAI 环境搭不好?纯小白从零部署指南,10 分钟搞定(命令可复制)
人工智能·python
m0_7349497922 分钟前
C#怎么操作Redis缓存 C#如何用StackExchange.Redis连接和操作Redis数据【数据库】
jvm·数据库·python