鱼C论坛

 找回密码
 立即注册
查看: 2808|回复: 3

[经验总结] 豆瓣250爬取数据并制成excel(待续)

[复制链接]
发表于 2018-2-23 23:59:17 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 snail:) 于 2018-2-24 00:02 编辑
  1. import requests
  2. import re
  3. import bs4
  4. import openpyxl
  5. #获得网页源码(未转码)
  6. def open_url(url):
  7.     headers = {'user-agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'}
  8.     html = requests.get(url,headers = headers)
  9.     return html

  10. def  find_movies(html):
  11.     soup = bs4.BeautifulSoup(html.text,'html.parser')#html.text是requests模块里面的自动解码功能,解码为文本的形式(自动匹配源码的编码形式)
  12.     movies = soup.find_all('div',class_ = 'hd')
  13.     movie = []#用于保存电影民称
  14.     for each in movies:
  15.         movie.append(each.a.span.text)
  16.     pop = []#用于保存评价人数
  17.     rate = []#用于保存评分信息
  18.     rates = soup.find_all('div',class_='star')
  19.     for each in rates:
  20.         rate.append(each.text.split('\n')[2])
  21.         pop.append(re.search(r'\d+',each.text.split('\n')[4]).group())
  22.         #group 用来读取数据re.search(),#暂时理解为类对象,group()方法访问类对象里面的变量
  23.         
  24.     jianjie = []#保存电影简介
  25.     jianjies = soup.find_all('div',class_='bd')
  26.     for each in jianjies:
  27.         '''
  28.         这里我看了原网址的代码,因为jianjies里面还有有些其他不是简介的内容也被包括进去了,所以下面需要一个容错的表达
  29.         '''
  30.         try:
  31.             jianjie.append(each.p.text.split('\n')[1].strip()+each.p.text.split('\n')[2].strip())#strip()函数去前后空格
  32.         except:
  33.             continue
  34.     result = []
  35.     i = len(movie)
  36.     for n in range(i):
  37.         result.append([movie[n],rate[n],pop[n],jianjie[n]])#往excel里添加数据需要是列表的形式
  38.     return result
  39. def save_to_excel(result):
  40.     '''
  41.     将数据保存到excel中
  42.     '''
  43.     wb = openpyxl.Workbook()
  44.     ws = wb.active

  45.     ws['A1'] = "电影名称"
  46.     ws['B1'] = '评分'
  47.     ws['C1'] = "评价人数"
  48.     ws['D1'] = "资料"

  49.     for each in result:
  50.         ws.append(each)

  51.     wb.save("豆瓣TOP250电影.xlsx")
  52. url = 'https://movie.douban.com/top250'
  53. html = open_url(url)
  54. result = find_movies(html)
  55. save_to_excel(result)

复制代码



这里还未把其他几页放进去,因为找页数的方法不是很明白需要继续学习。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-7-21 20:06:43 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-9-7 15:45:47 | 显示全部楼层
好好
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-5-17 09:33:10 | 显示全部楼层
学习中
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-27 03:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表