import pandas as pd
import requests
from bs4 import BeautifulSoup
import time def spider(url, headers):
print("正在抓取url: " + url)
datas = requests.get(url=url, headers=headers).text
# 解析url
soup = BeautifulSoup(datas, 'lxml')
# 获取数据集合,find_all 返回的是集合类型,所以取[0], 找table标签下 的 属性是 id:tbContent
moives_tables = soup.find_all('table', {'id': 'tbContent'})[0]
# 获取每一个子节点 tr标签
moives = moives_tables.findAll('tr')
# 获取电影名字,电影名字在每个tr标签里面的第一个td标签里面,由于是有多个td所以要用for遍历
names = [tr.find_all('td')[0].a.get('title') for tr in moives[1:]]
# 获取电影的详情页url地址,而且下面提供给获取导演使用,因为导演信息不在主页面上
hrefs = [tr.find_all('td')[0].a.get('href') for tr in moives[1:]]
# 获取电影类型
types = [tr.find_all('td')[1].string for tr in moives[1:]]
# 获取票房数据
box_offices = [int(tr.find_all('td')[2].string) for tr in moives[1:]]
# 获取平均票价
Average_fare = [tr.find_all('td')[3].string for tr in moives[1:]]
# 获取上映日期
show_time = [tr.find_all('td')[6].string for tr in moives[1:]]
# print(names, hrefs, types, box_offices, Average_fare, show_time)
# print(len(hrefs))
daoyans = []
for href in hrefs:
try:
daoyan_datas = requests.get(href)
# 出现错误的原因是因为这里的daoyan_datas是requests对象,无法用BeautifulSoup解析,可以在daoyan_datas后面加上content
soup = BeautifulSoup(daoyan_datas.content, 'lxml')
# 获取导演,由于数据是带换行的,所以要用replace("\n","") 取消换行
daoyan = soup.select('dl.dltext dd')[0].get_text().replace("\n", "")
#print(daoyan)
daoyans.append(daoyan)
#print(len(daoyans))
time.sleep(0.5)
except:
daoyans.append("获取失败")
# 数据拼接,得到的数据类型是 <class 'pandas.core.frame.DataFrame'> ,所以要用 DataFrame() 函数来写入excel
df = pd.DataFrame({
'name': names,
'href': hrefs,
'type': types,
'box_office': box_offices,
'Average_fare': Average_fare,
'show_time': show_time,
'directors': daoyans
})
download(df) '''
问题是不能连续存储,都是重新创建文件csv, os文件操作 mode='a'
'''
def download(df):
df.to_csv('D://box_office.csv', mode='a', index=False, header=False)
print("done") if __name__ == "__main__":
start_time = time.time()
headers = {
'Cookie': 'Hm_lvt_daabace29afa1e8193c0e3000d391562=1570691612; Hm_lpvt_daabace29afa1e8193c0e3000d391562=1570691612',
'Host': 'www.cbooo.cn',
'Upgrade-Insecure-Requests': '1',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36'
}
base_url = "http://www.cbooo.cn/year?year="
for i in range(2008, 2020):
url = base_url + str(i)
spider(url, headers)
time.sleep(2)
print(round((time.time() - start_time), 3))

  

python实战项目 — 爬取中国票房网年度电影信息并保存在csv的更多相关文章

  1. Python爬取中国票房网所有电影片名和演员名字,爬取齐鲁网大陆所有电视剧名称

    爬取CBO中国票房网所有电影片名和演员名字 # -*- coding: utf-8 -*- # 爬取CBO中国票房网所有电影片名 import json import requests import ...

  2. python实战项目 — 爬取 校花网图片

    重点: 1.  指定路径创建文件夹,判断是否存在 2. 保存图片文件 # 获得校花网的地址,图片的链接 import re import requests import time import os ...

  3. python实战项目 — 爬取 妹子图网,保存图片到本地

    重点: 1. 用def函数 2. 使用 os.path.dirname("路径保存") , 实现每组图片保存在独立的文件夹中 方法1: import requests from l ...

  4. python爬取中国知网部分论文信息

    爬取指定主题的论文,并以相关度排序. #!/usr/bin/python3 # -*- coding: utf-8 -*- import requests import linecache impor ...

  5. Python爬取中国天气网

    Python爬取中国天气网 基于requests库制作的爬虫. 使用方法:打开终端输入 “python3 weather.py 北京(或你所在的城市)" 程序正常运行需要在同文件夹下加入一个 ...

  6. 初识python 之 爬虫:爬取中国天气网数据

    用到模块: 获取网页并解析:import requests,html5lib from bs4 import BeautifulSoup 使用pyecharts的Bar可视化工具"绘制图表& ...

  7. 利用Python网络爬虫爬取学校官网十条标题

    利用Python网络爬虫爬取学校官网十条标题 案例代码: # __author : "J" # date : 2018-03-06 # 导入需要用到的库文件 import urll ...

  8. python爬取当当网的书籍信息并保存到csv文件

    python爬取当当网的书籍信息并保存到csv文件 依赖的库: requests #用来获取页面内容 BeautifulSoup #opython3不能安装BeautifulSoup,但可以安装Bea ...

  9. python爬虫项目-爬取雪球网金融数据(关注、持续更新)

    (一)python金融数据爬虫项目 爬取目标:雪球网(起始url:https://xueqiu.com/hq#exchange=CN&firstName=1&secondName=1_ ...

随机推荐

  1. BurpSuite intuder里保存所有网页的特定内容:以bugku的cookies欺骗为例题

    这题里想读取index.php只能一行一行的读,通过控制line参数的值.如下: 正常的writeup都是写个爬虫,但我觉得burp肯定有自带这种功能,不用重造轮子.经过学习后发现以下步骤可以实现. ...

  2. SQLEXPR_x64_CHS、SQLEXPRADV_x64_CHS、SQLEXPRWT_x64_CHS、SqlLocalDB、SQLManagementStudio_x64_CHS各版本说明

    LocalDB (SqlLocalDB)LocalDB 是 Express的一种轻型版本,该版本具备所有可编程性功能,但在用户模式下运行,并且具有快速的零配置安装和必备组件要求较少的特点.如果您需要通 ...

  3. FIS3

    #npm install -g cnpm --registry=https://registry.npm.taobao.org#cnpm install -g fis3 npm install fis ...

  4. #C++初学记录(字符串与指针操作库函数)

    测试程序 #include<iostream> #include<cstring> using namespace std; int a[204],b[204],lena,n; ...

  5. UE4虚幻引擎独立游戏制作教程 UE4编程教学 虚幻引擎4

    非常好的一套UE4入门教学课程,语言诙谐幽默,并且是中文语音中文语音中文语音 赠送[精通Unreal引擎技术——关卡设计艺术]PDF版 目录 FLV格式,大小5G,中文语音 扫码时备注或说明中留下邮箱 ...

  6. https://docs.huihoo.com/infoq/qconbeijing/2016/day1/工程效率提升专题/2-2-支持百度万人开发的工具装备及百度工程能力建设-夏仲璞.pdf

    https://docs.huihoo.com/infoq/qconbeijing/2016/day1/工程效率提升专题/2-2-支持百度万人开发的工具装备及百度工程能力建设-夏仲璞.pdf http ...

  7. taocrypt

    taocrypt MySQL Bugs: #25189: mysqld: coding.cpp:243: void TaoCrypt::Base64Decoder::Decode(): Asserti ...

  8. axios请求数据完整

    <template> <!-- 所有的内容要被根节点包含起来 --> <div id="home"> 首页组件 <button @clic ...

  9. svn使用步骤

    这里只是记录大概使用过程,操作步骤只供参考,不要按部就班. 1.安装SVN 服务端Setup-Subversion-1.6.5.msi和客户端TortoiseSVN-1.6.5.16974-win32 ...

  10. 【Java】 rapid-generator 代码生成器

    rapid-generator是一个生成器引擎,让你可以专注与代码生成器模板的编写, 可以生成如ibatis,ibatis3,hibernate,spring_mvc,struts2等等代码. rap ...