33731934 2024-02-05 16:23 采纳率: 62.5%
浏览 1

一个关于python爬虫的问题

有一个.NET开发的页面,用了doPostback 加密了链接,现在需要获取链接后的弹出网页中信息,用pyautogui模拟鼠标点击,在新开的页面中如何获取到页面的表格数据?不知道怎么爬取当前活动页面中的数据?谢谢了

  • 写回答

2条回答 默认 最新

  • 专家-郭老师 Java领域新星创作者 2024-02-05 16:25
    关注

    参考通义千问和郭老师的小迷弟雅思莫了-编写提供,主要是为了帮助您快速解决问题,如下回答,您可以参考下,如有问题,评论区留言。

    处理.NET页面中的doPostback加密链接并模拟点击打开新页面后获取表格数据,涉及到的技术点主要包括:

    1. 解析和模拟POST请求:对于doPostback类型的提交,通常需要分析网络请求的Payload(包括ViewState、EventValidation等字段),然后使用Python的requests库或者selenium库来模拟这个POST请求。

      • 使用requests时,除了构造headers之外,还需要将表单数据以字典形式传递给post方法。
      • 使用selenium则可以更自然地模拟用户行为,直接定位到触发doPostback的元素并执行click操作。
    2. 页面加载与切换

      • 如果新开的页面在当前浏览器窗口中打开,那么如果是用selenium,可以直接继续操作新页面上的DOM元素获取内容。
      • 如果是弹出新的浏览器窗口或标签页,可能需要通过selenium切换至新窗口再进行操作。
    3. 抓取表格数据

      • 新页面加载完成后,无论是requests配合BeautifulSoup解析HTML还是selenium直接操作DOM,都可以采用类似的方法获取表格数据。
      • 一般会找到表格(HTML <table> 标签)并遍历其中的行(<tr>)和单元格(<td><th>)元素,提取所需信息。

    下面是一个简化的示例,假设你已经使用selenium打开了新页面,并且要抓取表格数据:

    from selenium import webdriver
    from bs4 import BeautifulSoup
    
    # 初始化webdriver,比如Chrome
    driver = webdriver.Chrome()
    
    # 模拟登录或者其他操作触发doPostback
    # ...此处省略具体代码...
    
    # 点击按钮打开新页面(假设新页面在当前窗口)
    button_element = driver.find_element_by_id("your-button-id")
    button_element.click()
    
    # 确保新页面加载完成
    driver.implicitly_wait(10)  # 等待最多10秒,直到元素可见
    
    # 获取新页面的HTML内容
    html_content = driver.page_source
    
    # 解析HTML
    soup = BeautifulSoup(html_content, 'html.parser')
    
    # 找到表格元素
    table_element = soup.find('table', {'id': 'your-table-id'})
    
    # 遍历表格数据
    for table_row in table_element.find_all('tr'):
        cells = table_row.find_all(['td', 'th'])
        for cell in cells:
            print(cell.text)
    
    # 最后记得关闭webdriver
    driver.quit()
    

    请根据实际网页结构替换上述代码中的元素选择器ID。如果页面有动态加载的内容,可能还需要结合JavaScript Executor等待异步加载完成。同时,对于加密链接的处理,需要先研究其加密机制并实现解密或模拟生成合法的POST数据。

    评论

报告相同问题?

问题事件

  • 创建了问题 2月5日

悬赏问题

  • ¥15 phython如何实现以下功能?查找同一用户名的消费金额合并—
  • ¥15 ARIMA模型时间序列预测用pathon解决
  • ¥15 孟德尔随机化怎样画共定位分析图
  • ¥18 模拟电路问题解答有偿速度
  • ¥15 CST仿真别人的模型结果仿真结果S参数完全不对
  • ¥15 误删注册表文件致win10无法开启
  • ¥15 请问在阿里云服务器中怎么利用数据库制作网站
  • ¥60 ESP32怎么烧录自启动程序,怎么查看客户esp32板子上程序及烧录地址
  • ¥50 html2canvas超出滚动条不显示
  • ¥15 java业务性能问题求解(sql,业务设计相关)