在数据分析中,数据的获取是第一步。随着互联网的普及,网络爬虫成为获取数据的重要手段。本文将详细介绍如何使用Python爬取简单的网页数据。
一、环境准备
在开始之前,我们需要确保安装了以下Python库:
- requests:用于发送HTTP请求
- BeautifulSoup:用于解析HTML文档
- pandas:用于数据处理
安装命令如下:
pip install requests beautifulsoup4 pandas
二、了解目标网站
在爬取数据之前,我们需要了解目标网站的结构。掘金是一个技术社区,我们可以从首页爬取文章的标题、链接和作者信息。
首先,打开浏览器,进入掘金首页,并查看网页的HTML…
三、发送HTTP请求
使用requests库发送HTTP请求获取网页内容:
import requests url = 'https://juejin.cn/' headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36' } response = requests.get(url, headers=headers) # 打印网页内容 print(response.text)
四、解析HTML文档
使用BeautifulSoup解析HTML文档:
from bs4 import BeautifulSoup soup = BeautifulSoup(response.text, 'html.parser') # 打印解析后的HTML文档 print(soup.prettify())
五、提取数据
根据HTML结构提取文章的标题、链接和作者信息:
articles = soup.find_all('div', class_='content-box') for article in articles: title = article.find('a', class_='title').text link = article.find('a', class_='title')['href'] author = article.find('a', class_='username').text print(f"标题: {title}, 链接: https://juejin.cn{link}, 作者: {author}")
六、保存数据
将提取的数据保存到CSV文件中:
import pandas as pd data = [] for article in articles: title = article.find('a', class_='title').text link = article.find('a', class_='title')['href'] author = article.find('a', class_='username').text data.append({ '标题': title, '链接': f"https://juejin.cn{link}", '作者': author }) df = pd.DataFrame(data) df.to_csv('juejin_articles.csv', index=False, encoding='utf-8-sig') print("数据已保存到juejin_articles.csv")
七、综合实例
下面是一个综合的完整示例,展示如何爬取掘金首页的文章信息并保存到CSV文件中:
import requests from bs4 import BeautifulSoup import csv # 用户ID和基础URL user_id = "换成自己的掘金user_id" base_url = f"https://juejin.cn/user/{user_id}/posts" # 发送请求获取用户文章列表页面 response = requests.get(base_url) soup = BeautifulSoup(response.text, 'html.parser') # 提取文章链接 articles = soup.find_all('a', class_='title') article_urls = ["https://juejin.cn" + article['href'] for article in articles] # 创建CSV文件 with open('juejin_articles.csv', 'w', newline='', encoding='utf-8') as file: writer = csv.writer(file) writer.writerow(['标题', '链接', '内容']) # 遍历每篇文章链接并爬取内容 for url in article_urls: article_response = requests.get(url) article_soup = BeautifulSoup(article_response.text, 'html.parser') # 提取标题 title_tag = article_soup.find('h1', class_='article-title') title = title_tag.text.strip() if title_tag else '标题未找到' # 提取内容 content_tag = article_soup.find('div', class_='markdown-body') content = content_tag.text.strip() if content_tag else '内容未找到' # 写入CSV文件 writer.writerow([title, url, content]) print("数据爬取完成并保存到 juejin_articles.csv")
八、结果输出
运行上述代码后,将会在当前目录下生成一个名为juejin_articles.csv的文件,文件内容如下:
九、总结
本文详细介绍了如何使用Python爬取简单的网页数据,以掘金为例,展示了从发送HTTP请求、解析HTML文档到提取和保存数据的完整过程。通过这个示例,你可以掌握基本的网页爬取技巧,为后续的数据分析打下基础。希望本文对你有所帮助。
作者:Rjdeng