爬虫练习 2

爬取百度百科“名侦探柯南各集列表”网页
目标:

https://baike.baidu.com/item/%E5%90%8D%E4%BE%A6%E6%8E%A2%E6%9F%AF%E5%8D%97%E5%90%84%E9%9B%86%E5%88%97%E8%A1%A8/49823770

爬取数据的目的以及后续处理:

目的:清楚每一集的登场人物,方便追番(bushi),老二次元了(比如fbi kid 酒厂等)

  1. [ x ] 获取名侦探柯南剧集数据/表格
  2. [ ] 将“登场”数据添加在Bilibili名侦探柯南TV的每一集剧集标题
  3. [ ] 由于剧集集数对应在国内有多个版本,可能会使用查找算法将其标题对齐操作.by jquery?js?

使用框架:request bs4 pandas以及基本frame

#codeing = utf-8
#@author: xiaozhu_Sai
import requests
from bs4 import BeautifulSoup
import os
import sys
import time
import random
import webbrowser
import pandasurl = 'https://baike.baidu.com/item/%E5%90%8D%E4%BE%A6%E6%8E%A2%E6%9F%AF%E5%8D%97%E5%90%84%E9%9B%86%E5%88%97%E8%A1%A8/49823770'headers = {'user-agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36'}req = requests.get(url, headers=headers)bs = BeautifulSoup(req.content, 'html.parser')##测试建议使用下载的静态网页,血的教训# bs = BeautifulSoup('名侦探柯南各集列表_百度百科.html', 'html.parser')pandas.set_option('display.max_rows', None)#每列中文对齐pandas.set_option('display.unicode.ambiguous_as_wide', True)pandas.set_option('display.unicode.east_asian_width', True)pandas.set_option('max_colwidth',100)#数据超过总宽度后,是否折叠显示pandas.set_option('expand_frame_repr', False)#生成dataframe对象df = pandas.read_html(url, attrs={"log-set-param" : "table_view"})#删除最后一项是参考资料 NaNdf.pop(len(df)-1)th = ['集数', '标题', '原创', '登场']flag = 0for each in df:#py3使用.fillna替换NaN为0each.fillna(value=0, inplace=True)#第二项1 单独处理flag += 1 #标记第二项if flag == 2:each.columns = ['']*len(each.columns)#删除年份和标题(集数 标题……)each.drop([0, 1], inplace=True)continue#删除年份each.drop(0, inplace=True)each = each.loc[: , th]#写入文件with open('优化的表格.txt','a+',encoding='utf-8') as f:f.write(str(each) + '\n')##测试#print(str(each))
  • 首先是制作requests对象,使用header伪装成浏览器,制作bs对象三部曲。
  • pandas.set_option的设置主要是解决爬取的dataframe会省略中间的大部分数据、中文导致对齐问题。参考https://blog.csdn.net/weekdawn/article/details/81389865
  • 其他都比较正常,网页表格方面有两个需要注意的地方。
    • 变量flag的引入是为了标记表格第二个元素,也不知道什么原因,第二项即“1997年 43-85集”的cloumns、0行、1行和其他12行都不一样,只能单独使用flag+判断语句处理
    • 由于read_html()爬取table的单项td导致13项每一年的td都会重复显示(原因尚未不明),导致不美观也不方便我后续使用该数据,所以使用drop()方法删除
  • 未来会优化/完善的地方:爬取方式改为多线程,使用pandas讲数据写入excel,

鄙人为python初学者,为了方便查看理解,所有的细节都做了注释。如果有大神对这个感兴趣可联系鄙人,QQ:746139767 (大神麻烦备注CSDN)
项目源码、静态网页以及爬取的txt文件已上传Github:

https://github.com/LorentzForceWorkEnzyme/Demo_Crawler/tree/master/1.4%E5%90%8D%E4%BE%A6%E6%8E%A2%E6%9F%AF%E5%8D%97%E5%89%A7%E9%9B%86%E4%BF%A1%E6%81%AF%E8%A1%A8%E7%88%AC%E5%8F%96

python爬取练习 名侦探柯南剧集信息——各集列表相关推荐

  1. python爬取2019年计算机就业_2019年最新Python爬取腾讯招聘网信息代码解析

    原标题:2019年最新Python爬取腾讯招聘网信息代码解析 前言 初学Python的小伙们在入门的时候感觉这门语言有很大的难度,但是他的用处是非常广泛的,在这里将通过实例代码讲解如何通过Python ...

  2. python爬取58同城的兼职信息

    标题python爬取58同城的兼职信息 刚刚开始学习爬虫,一些 自己研究的小东西,爬取58同城上面的兼职信息放入Excel表格里,具体代码解释在代码里给出注释,下面给出完整代码: #首先是导包 imp ...

  3. python爬取携程旅游评价信息词云图分析

    python爬取携程旅游评价信息词云图分析 前言 前面咱们已经分析过如何爬取携程旅游的相关信息,如果没有看过的,可以先跳转看一下前面的那篇博客:python 爬虫 一键爬取携程旅游团数据 这一篇呢,咱 ...

  4. Python爬取酷狗音乐歌手信息

    前面我们说过用python爬取网易云音乐的歌手信息,Python爬取网易云音乐歌手信息 今天我们来爬取一下酷狗音乐的歌手信息(歌手id和歌手名),如果环境没有安装好,可以参照前面爬网易云环境配置作为参 ...

  5. python爬取boss直聘招聘信息_Python 爬取boss直聘招聘信息!

    原标题:Python 爬取boss直聘招聘信息! 1.一些公共方法的准备 获取数据库链接: importpymysql ''' 遇到不懂的问题?Python学习交流群:821460695满足你的需求, ...

  6. 用python爬取豆瓣影评及影片信息(评论时间、用户ID、评论内容)

    爬虫入门:python爬取豆瓣影评及影片信息:影片评分.评论时间.用户ID.评论内容 思路分析 元素定位 完整代码 豆瓣网作为比较官方的电影评价网站,有很多对新上映影片的评价,不多说,直接进入正题. ...

  7. python爬取去哪儿网酒店信息

    python爬取去哪儿网酒店信息 利用selenium+python爬取去哪儿网酒店信息,获取酒店名称.酒店地址.第一条评论.评论数.最低价格等信息,写入excel表. 1.观察网页结构 浏览器地址栏 ...

  8. Python爬取2022春节档电影信息

    Python爬取2022春节档电影信息 前提条件 相关介绍 实验环境 具体步骤 确定目标网站 分析网站 按F12打开浏览器操作台 按Ctrl+Shift+C快捷键,用鼠标找到目标元素 按Ctrl+F快 ...

  9. 用Python爬取淘宝网商品信息

    用Python爬取淘宝网商品信息 转载请注明出处 网购时经常会用到淘宝网 点我去淘宝但淘宝网上的商品琳琅满目,于是我参照中国大学 MOOC的代码写了一个爬取淘宝网商品信息的程序 代码如下: impor ...

最新文章

  1. python线上培训多少钱-Python人工智能在线培训班学费多少钱?
  2. 微型计算机电源的选购应注意哪些问题,购买小功率ups电源的注意事项
  3. angular接口传参
  4. Oracle数据库之数据类型
  5. vivo C/C++工程师视频面试总结 20180802
  6. 解决Linux 忘记root 密码的办法
  7. 视频解码芯片SAA7111A的初始化
  8. CATransform3D 特效详解
  9. python短信验证码_玩转python之获取短信验证码
  10. Memcache和Redis区别:
  11. MySQL5.7 Group Replication (MGR)
  12. 在使用mac和windows双系统中常见的移动硬盘的格式
  13. scrollbars属性,MultiLine 属性
  14. 【Nodejs】用http模块写一个简单的web服务器
  15. mysql分组取最新
  16. 微信公众号花式排版技巧分享
  17. Java毕业设计_基于javaweb的网上预约实验室管理系统的设计与实现
  18. PHP根据经纬度查询地理位置
  19. layui下的图片轮播图效果代码收藏
  20. 大一python基础编程试卷_2020年大学慕课Python编程基础试题及答案

热门文章

  1. P44 break continue
  2. 微信流量主点击量与曝光量是什么意思
  3. 数学建模学习——聚类(包含优秀建模论文中的应用)
  4. linux定时运行命令
  5. 迪米特法则 (Law of Demeter, LoD)
  6. matlab绘制抛物线,MATLAB中绘制抛物线的图像,请补充完成下面代码: clc,clear; x=linspace(...
  7. js时间戳转化为时间
  8. win7计算机怎么优化驱动器,Win7优化电脑加快关机速度的方法技巧
  9. 【创建型】工厂模式(Factory Pattern)详解
  10. [转载]《武林外传》每一集都教会我们一个道理