python 爬虫爬取豆瓣top250保存到excel

1 篇文章 0 订阅
1 篇文章 0 订阅
import requests
from bs4 import BeautifulSoup
import re
import xlwt
def getContent(row): #从第几条开始
    headers1 = {'User-Agent': 'Mozilla/4.0', 'content-type': 'text/html; charset=utf-8'}
    r = requests.get("https://movie.douban.com/top250?start="+str(row)+"&filter=",headers=headers1)
    html = r.text
    soup = BeautifulSoup(html, "html.parser")
    #print(html)
    return soup
films=[] #用这个做添加
#getContent(0)
def getItem(row):
    soup = getContent(row)
    grid_view=soup.find("ol",attrs={"class":"grid_view"})
    #print(grid_view) #输出所有的ol
    #访问 grid_view 的li
    items = grid_view.find_all("li")        #所有的li
    #print(items[0])                          #输出一个li 肖申克的救赎


    for li in items:
        film = []
        #print(li.find("span",attrs={"class":"title"}).text)     #输出所有标题
        title = li.find("span",attrs={"class":"title"}).getText()
        # print(title)
        # 添加电影标题
        film.append(title)
        rating_num = li.find("span",attrs={"class":"rating_num"})#电影评分
        rating_numtxt = rating_num.getText()

        #电影信息加入评分
        film.append(rating_numtxt)

        #电影信息评论人数
        #方法一
        # #print(rating_num.next_sibling.next_sibling.next_sibling.next_sibling)
        # peopletxt = rating_num.next_sibling.next_sibling.next_sibling.next_sibling.getText()
        # pattern = re.compile('\d+')
        # peoplenum = re.findall(pattern,peopletxt)
        # print(peoplenum)
        # film.append(int(peoplenum[0]))

        #方法二
        star=li.find("div",attrs = {"class":"star"})
        num = re.findall(re.compile('\d+'),str(star))[-1]
        #print(x)
        film.append(int(num))


        #获取评论
        quote = li.find("span",attrs={"class":"inq"})
        if quote == None:
            film.append('没有评论')
        else:
            film.append(quote.getText())
        films.append(film)
    return
#导入csv
def saveData(savePath):
    book=xlwt.Workbook(encoding='utf-8',style_compression=0)
    sheet=book.add_sheet('豆瓣最受欢迎的电影信息',cell_overwrite_ok=True)
    col=(u'电影名称',u'评分',u'评论人数',u'短评')
    for i in range(0,len(col)):  #将列名写在第一行
        sheet.write(0,i,col[i])
    for i in range(0,len(films)): #250行数据一条一条加出来
        data=films[i]
        for j in range(0,len(data)):
            sheet.write(i+1,j,data[j])
    book.save(savePath)  #保存至本地excel文件中
    return

for i in range(0,250,25):
    getItem(i)
# print(data)
saveData('top250.xls')
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值