Python 爬取内容存入Excel实例

       【根据博友们的反馈,博主用python3重新写了一遍,并做了一些改进,点击查看python爬取豆瓣Top250-改进版

       最近老师布置了个作业,爬取豆瓣top250的电影信息。按照套路,自然是先去看看源代码了,一看,基本的信息竟然都有,心想这可省事多了。简单分析了下源代码,标记出所需信息的所在标签,ok,开始干活!

      鉴于正则表达式的资料已经看了不少,所以本次除了beautifulsoup外,还有些re的使用,当然,比较简单。而爬到信息后,以往一般是存到txt文件,或者数据库中,老是重样的操作,难免有些‘厌倦’。心想,干嘛不存到Excel表呢?对啊,可以存到Excel表嘛。。。

      环境准备:pip install openpyxl  (假设你已配好了python环境)

      好了,废话少说,上代码。

    

# coding=UTF-8
'''
  function:爬取豆瓣top250的电影信息,并写入Excel文件
'''
import requests
import re
from openpyxl import workbook  # 写入Excel表所用
from openpyxl import load_workbook  # 读取Excel表所用
from bs4 import BeautifulSoup as bs
import os
os.chdir('C:\Users\Administrator\Desktop')  # 更改工作目录为桌面


def getHtml(src):
    html = requests.get(src).content
    getData(html, src)  # 首页链接和其他页不同,所以单独获取信息
    urls = re.findall('href="(.*filter=?)', html)  # re获取获取跳转链接的href
    for u in range(len(urls) - 2):  # 匹配到的跳转链接最后两个重复,需去掉
        next_url = 'https://movie.douban.com/top250&#
Python的Selenium库主要用于浏览器自动化操作,包括网页抓取。要通过Selenium爬取豆瓣Top250电影列表保存到Excel文档,你需要做以下几个步骤: 1. 安装所需库:首先安装`selenium`、`webdriver_manager`(用于管理WebDriver,如ChromeDriver)以及`pandas`和`openpyxl`(用于处理Excel文件)。 ```bash pip install selenium webdriver_manager pandas openpyxl ``` 2. 下载配置WebDriver:下载对应浏览器的WebDriver,比如ChromeDriver,将其添加到系统路径或指定Selenium查找。 3. 编写Python脚本: ```python import time from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC import pandas as pd # 初始化浏览器实例 options = webdriver.ChromeOptions() options.add_argument('--headless') # 无头模式,隐藏窗口 driver = webdriver.Chrome(ChromeDriverManager().install(), options=options) # 路径替换为你实际的URL url = 'https://movie.douban.com/top250' # 访问豆瓣Top250页面 driver.get(url) time.sleep(2) # 等待页面加载完成 # 查找元素,找到表格数据区域 table = driver.find_element_by_css_selector('#main > div.hd > div.bd > ul > li') # 获取所有电影信息 data_rows = [] while table is not None: title_cell = table.find_element(By.CSS_SELECTOR, '.title a') rating_cell = table.find_element(By.CSS_SELECTOR, '.rating_num').text link = title_cell.get_attribute('href') data_row = { '电影名': title_cell.text, '评分': rating_cell, '链接': link } data_rows.append(data_row) next_page_button = table.find_element(By.CSS_SELECTOR, '.next') if next_page_button.is_displayed(): next_page_button.click() table = driver.find_elements(By.CSS_SELECTOR, '#main > div.hd > div.bd > ul > li')[0] # 更新table else: table = None # 结束循环,如果找不到下一页按钮 #数据转换为DataFrame df = pd.DataFrame(data_rows) # 保存到Excel文件 writer = pd.ExcelWriter('douban_top250.xlsx', engine='openpyxl') df.to_excel(writer, sheet_name='豆瓣Top250', index=False) writer.save() # 关闭浏览器 driver.quit() ```
评论 60
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值