Python 网络爬虫实战—《爬取 GitHub 的项目信息》
import requests
from bs4 import BeautifulSoup
import pandas as pd
# 定义一个函数来获取页面的 HTML 内容
def get_html(url):
try:
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}
response = requests.get(url, headers=headers)
return response.text
except requests.exceptions.RequestException as e:
print(f"An error occurred: {e}")
return None
# 定义一个函数来解析 HTML 内容,提取项目信息
def parse_html(html):
soup = BeautifulSoup(html, 'html.parser')
projects = soup.find_all('div', class_='col-12 mb-3')
data = []
for project in projects:
title = project.find('h1', class_='lh-condensed').text.strip()
description = project.find('p', class_='col-9 fw-bold mb-1').text.strip()
language = project.find('span', class_='d-inline-flex flex-wrap align-items-center fw-bold').text.strip()
stars = project.find('a', class_='m-0 text-bold').text.strip()
data.append({
'title': title,
'description': description,
'language': language,
'stars': stars
})
return data
# 定义一个函数来将项目信息写入 CSV 文件
def write_to_csv(data, filename):
df = pd.DataFrame(data)
df.to_csv(filename, index=False)
# 定义要爬取的 GitHub 主页和文件名
github_url = 'https://github.com/trending'
csv_filename = 'github_trending.csv'
# 获取 HTML 内容
html = get_html(github_url)
# 解析 HTML 并提取项目信息
projects_data = parse_html(html)
# 将项目信息写入 CSV 文件
write_to_csv(projects_data, csv_filename)
print(f"{len(projects_data)} projects have been saved to {csv_filename}.")
这段代码首先定义了一个函数get_html
来获取给定 URL 的 HTML 内容,然后定义了一个函数parse_html
来解析 HTML 并提取项目信息,最后将提取的数据写入CSV文件中。这个过程展示了如何使用Python网络爬虫技术来抓取和处理网页数据的基本步骤。
评论已关闭