豆瓣250信息爬取及保存到excel中

目录

一、爬取网页基本信息

二、将CSV文件转换为XLSX格式


一、爬取网页基本信息

网页头 Header:

网页URL: 

网页源代码:

 

#通过re来提取想要的有效信息
import re
import csv
import requests
def fun():
    for i in range(10):
        print(f"正在爬取第{i}页")
        url = "https://movie.douban.com/top250?start={}&filter=".format(i*25)
        headers = {
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36 Edg/97.0.1072.55"
        }
        resp = requests.get(url, headers=headers)
        page_content = resp.text
        # 解析数据
        obj = re.compile(r'<li>.*?<em class="">.*?</em>.*?<a href="(?P<link>.*?)">.*?'
                         r'<span class="title">(?P<name>.*?)</span>.*?'
                         r'<p class="">.*?<br>(?P<year>.*?)&nbsp.*?'
                         r'<span class="rating_num" property="v:average">(?P<content>.*?)</span>.*?'
                         r'<span>(?P<num>.*?)</span>', re.S)
        # 开始匹配
        result = obj.finditer(page_content)
        # 不读取空白行
        f = open("data.csv", 'a+', newline='')
        csvwriter = csv.writer(f)
        for it in result:
            # print(it.group("link"))
            # print(it.group("name"))
            # print(it.group("year").strip())
            # print(it.group("content"))
            # print(it.group("num"))
            dic = it.groupdict()
            dic['year'] = dic['year'].strip()
            csvwriter.writerow(dic.values())
            # print(it.group())

if __name__ == '__main__':
    fun()

二、将CSV文件转换为XLSX格式

import csv
import xlwt
def csv_to_xlsx():
    with open('data.csv', 'r') as f:
        #csv.reader 读取的结果是列表
        read = csv.reader(f)
        #创建一个工作簿
        workbook = xlwt.Workbook()
        #创建一个sheet对象
        sheet = workbook.add_sheet('data')

        #修改写入格式 居中对齐
        stytle=xlwt.XFStyle() #创建一个样式对象 初始化样式
        al=xlwt.Alignment()
        al.horz=0x02
        al.vert=0x01
        stytle.alignment=al

        list1=["链接","电影名称","年份","评分","评价人数"]
        a=0
        for i in list1:
            sheet.write(0,a,i,style=stytle)
            a=a+1
        l = 1
        for line in read:#读取每一个列表
            r = 0
            for i in line:#读取每一个列表单元的内容
                sheet.write(l, r, i,style=stytle)  # 一个一个将单元格数据写入
                r = r + 1
            l = l + 1

        workbook.save('1.xlsx')  # 保存Excel

if __name__ == '__main__':
    csv_to_xlsx()

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为您提供一个Python虫程序来实现这个功能。但是在使用之前,您需要安装一些必要的库,包括requests、BeautifulSoup、pandas和openpyxl。可以通过在命令行运行以下命令进行安装: ``` pip install requests pip install beautifulsoup4 pip install pandas pip install openpyxl ``` 安装完成后,可以使用以下代码来实现您的需求: ```python import requests from bs4 import BeautifulSoup import pandas as pd # 构造请求头 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'} # 网页 movie_list = [] for i in range(0, 250, 25): url = 'https://movie.douban.com/top250?start={}&filter='.format(i) r = requests.get(url, headers=headers) soup = BeautifulSoup(r.text, 'html.parser') ol = soup.find('ol', class_='grid_view') for li in ol.find_all('li'): movie = [] hd = li.find('div', class_='hd') movie.append(hd.find('span', class_='title').text) bd = li.find('div', class_='bd') movie.append(bd.find('p').text.strip().replace('\n', '').split('\xa0')[0]) movie.append(bd.find('div', class_='star').find_all('span')[1].text) movie.append(bd.find('span', class_='inq').text) movie_list.append(movie) # 保存Excel df = pd.DataFrame(movie_list, columns=['电影名称', '电影信息', '评分', '一句话评价']) df.to_excel('douban_top250.xlsx', index=False) print('豆瓣top250数据已保存Excel文件!') ``` 该程序会豆瓣电影top250的数据,包括电影名称、电影信息、评分和一句话评价,并将数据保存Excel文件。请注意,豆瓣网站对虫有反措施,请勿频繁,以免被封IP。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值