Python实现抓取网页生成Excel文件的方法示例

  • Post category:Python

我来讲解一下“Python实现抓取网页生成Excel文件的方法示例”的完整实例教程。

概述

本文将介绍如何使用Python实现抓取网页并生成Excel文件的方法。具体实现过程将使用python requests库、beautifulsoup4库和openpyxl库。整个过程将分为以下几个步骤:

  1. 通过requests库请求网页获取网页源代码
  2. 使用beautifulsoup4库解析网页源代码提取需要的信息
  3. 使用openpyxl库生成Excel文件并将需要的信息写入Excel文件中

示例一:抓取豆瓣电影排行榜并生成Excel文件

1. 解析网页源代码和提取需要的信息

这里我们以豆瓣电影排行榜为例。首先,我们需要使用requests库请求网页并获取网页源代码。

import requests

url = 'https://movie.douban.com/chart'
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)
response.encoding = 'utf-8'
html = response.text

接下来,我们使用beautifulsoup4库解析网页源代码,并提取所有电影的名称、评分和评价人数。

from bs4 import BeautifulSoup

soup = BeautifulSoup(html, 'html.parser')
movie_list = soup.select('div .pl2')
movies = []
for movie in movie_list:
    a = movie.select_one('a')
    name = a.text.strip()
    href = a['href']
    rating = movie.parent.select_one('.rating_num').text.strip()
    comment_num = movie.parent.select_one('.star span:last-child').text.strip()[:-3]
    movies.append([name, rating, comment_num])

2. 将信息写入Excel文件

最后,我们使用openpyxl库新建一个Excel文件,并将电影名称、评分和评价人数写入Excel文件的对应列中。

from openpyxl import Workbook

wb = Workbook()
sheet = wb.active
sheet['A1'] = '电影名称'
sheet['B1'] = '评分'
sheet['C1'] = '评价人数'
for index, row in enumerate(movies):
    sheet.cell(row=index+2, column=1, value=row[0])
    sheet.cell(row=index+2, column=2, value=row[1])
    sheet.cell(row=index+2, column=3, value=row[2])
wb.save('douban_movie_ranking.xlsx')

现在我们已经成功获取电影的排名、名称、评分和评价人数,并将其写入了一个名为”douban_movie_ranking.xlsx”的Excel文件中。

示例二:抓取股票行情并生成Excel文件

在这个示例中,我们会抓取“Yahoo Finance上的股票行情信息并将其写入一个Excel文件中。同样,我们第一步需要使用requests库请求网页并获取网页源代码。

import requests

url = 'https://finance.yahoo.com/quote/AAPL?p=AAPL'
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)
response.encoding = 'utf-8'
html = response.text

接下来,我们使用beautifulsoup4库解析网页源代码,并提取股票的代码、名称、最新价格和变化比率。

from bs4 import BeautifulSoup

soup = BeautifulSoup(html, 'html.parser')
quote_summary = soup.select_one('#quote-summary')
symbol = quote_summary.select_one('.D(ib) > h1').text.strip().split(' - ')[0]
name = quote_summary.select_one('.D(ib) > h1').text.strip().split(' - ')[1]
price = quote_summary.select_one('.Trsdu(0.3s) > span').text.strip()
change_rate = quote_summary.select_one('.Trsdu(0.3s) > span:nth-child(2)').text.strip()

最后,我们使用openpyxl库新建一个Excel文件,并将股票代码、名称、最新价格和变化比率写入Excel文件的对应列中。

from openpyxl import Workbook

wb = Workbook()
sheet = wb.active
sheet['A1'] = 'Symbol'
sheet['B1'] = 'Name'
sheet['C1'] = 'Price'
sheet['D1'] = 'Change Rate'
sheet.cell(row=2, column=1, value=symbol)
sheet.cell(row=2, column=2, value=name)
sheet.cell(row=2, column=3, value=price)
sheet.cell(row=2, column=4, value=change_rate)
wb.save('stock.xlsx')

现在我们已经成功获取了股票的代码、名称、最新价格和变化比率,并将其写入了一个名为”stock.xlsx”的Excel文件中。

总结

以上两个示例展示了如何使用Python实现抓取网页并生成Excel文件的方法。其中,我们使用requests库请求网页,使用beautifulsoup4库解析网页并提取需要的信息,使用openpyxl库生成Excel文件并将需要的信息写入Excel文件中。希望本文对初学者有所帮助。