如何使用 Python 实现模拟登录和爬取网页时的数据存储和管理
实现模拟登录和爬取网页时的数据存储和管理的步骤如下:
- 导入需要使用的库,如requests和BeautifulSoup。
import requests from bs4 import BeautifulSoup
- 定义登录函数,在函数中使用requests.post方法向网站发送POST请求,传递用户名和密码,并保存登录后的Cookie。
def login(username, password): url = 'https://www.pidancode.com/login' data = {'username': username, 'password': password} session = requests.Session() response = session.post(url, data=data) return session
- 定义爬取网页的函数,使用requests.get方法获取网页内容,并使用BeautifulSoup解析HTML文档,将需要的数据提取出来并返回。
def crawl(session, url): response = session.get(url) soup = BeautifulSoup(response.content, 'html.parser') data = soup.find('div', {'class': 'article'}).text.strip() return data
- 定义数据存储和管理的函数,如将数据存储到MySQL数据库或CSV文件中。以下为将数据存储到CSV文件中的示例:
import csv def save_data_to_csv(data): with open('data.csv', 'a', encoding='utf-8', newline='') as f: writer = csv.writer(f) writer.writerow([data])
- 在主程序中调用上述函数,完整代码如下:
import requests from bs4 import BeautifulSoup import csv def login(username, password): url = 'https://www.pidancode.com/login' data = {'username': username, 'password': password} session = requests.Session() response = session.post(url, data=data) return session def crawl(session, url): response = session.get(url) soup = BeautifulSoup(response.content, 'html.parser') data = soup.find('div', {'class': 'article'}).text.strip() return data def save_data_to_csv(data): with open('data.csv', 'a', encoding='utf-8', newline='') as f: writer = csv.writer(f) writer.writerow([data]) if __name__ == '__main__': session = login('username', 'password') url = 'https://www.pidancode.com/article' data = crawl(session, url) save_data_to_csv(data)
其中,需要将用户名和密码替换为实际的用户名和密码。运行程序后,将会在当前目录下生成一个名为data.csv的文件,文件中每行为一条数据。
相关文章