返回

如何从受密码保护的网页中刮取数据表格?

python

利用 Requests 刮取受密码保护网页中的数据表格

引言

网络爬虫是数据驱动时代的重要工具,可以从网站中提取宝贵的信息。但是,当遇到受密码保护的网站时,挑战就来了。本文将详细介绍如何使用 Requests 库初始化网页搜索,并从受密码保护的网站中刮取数据表格。

建立会话

首先,我们需要创建一个会话来与网站保持连接。这将允许我们在多个请求之间保持登录状态:

import requests

session = requests.Session()

登录

有了会话,我们可以提供凭据并登录到网站:

login_url = 'myWebsiteURL'
credentials = {
    'username': 'REDACTED',
    'password': 'REDACTED'
}

session.post(login_url, data=credentials)

初始化搜索

登录后,我们可以初始化搜索查询。但由于网站的设计,我们需要激活保存的搜索元素,然后激活提交按钮:

1. 确定元素标识符: 使用浏览器开发人员工具找到元素的 ID 或类名。

2. 激活元素: 找到元素并使用 click() 方法激活它们:

scrape_url = r'MyWebpgeQuery'
soup = BeautifulSoup(session.get(scrape_url).text, 'html.parser')

search_element = soup.find_element_by_id('saved_search_element_id')
search_element.click()

submit_button = soup.find_element_by_id('submit_button_id')
submit_button.click()

刮取数据表格

激活提交按钮后,我们可以使用 BeautifulSoup 解析 HTML 并使用 pandas.read_html() 函数提取数据表格:

tables = pandas.read_html(response.text)
df = tables[0]

导出数据

最后,我们可以将数据导出到数据表中:

df.to_csv('data.csv')

结论

通过使用 Requests 库,我们可以从受密码保护的网站中初始化网页搜索和刮取数据表格。本文提供了分步指南,包括如何建立会话、登录、初始化搜索以及使用 BeautifulSoup 和 pandas 库进行数据提取。

常见问题解答

  • 为什么我需要使用会话? 会话可以让我们在多个请求之间保持登录状态。
  • 如何确定元素标识符? 使用浏览器开发人员工具可以找到元素的 ID 或类名。
  • 如何激活元素? 使用 find_element_by_id()find_element_by_class_name() 方法找到元素,然后使用 click() 方法激活它们。
  • 如何使用 BeautifulSoup 提取数据? 使用 find()find_all() 方法可以从 HTML 中提取数据。
  • 如何使用 pandas 刮取数据表格? 使用 read_html() 函数可以从 HTML 中提取数据表格。