【Python项目】——爬虫爬取柯南的剧集数和集名(有错求指点) ...

打印 上一主题 下一主题

主题 1000|帖子 1000|积分 3000

项目目标:因为柯宝除了在CSDN写博客这一爱好外,还比力喜欢追番剪辑,尤其是柯南,想到了爬取这个!!参考Github大佬,原项目链接:
原作者Github
https://github.com/LorentzForceWorkEnzyme/PythonSpiderDemo/blob/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/readme.md项目功能:从一个网页(这里是《名侦察柯南》各集列表的百度百科页面)抓取数据,并将这些数据以特定的格式写入到一个文本文件中。
目标网页:
名柯剧集百度百科
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
 目标效果:

实今世码:
  1. #codeing = utf-8
  2. #@author: kebaozuishuai
  3. import requests  # 导入requests库,用于发送HTTP请求  
  4. from bs4 import BeautifulSoup  # 导入BeautifulSoup库,用于解析HTML和XML文档  
  5. import os  # 导入os库,用于操作系统相关的操作(但在这段代码中未使用)  
  6. import sys  # 导入sys库,用于与Python解释器交互(但在这段代码中未使用)  
  7. import time  # 导入time库,用于时间相关的操作(但在这段代码中未使用)  
  8. import random  # 导入random库,用于生成随机数(但在这段代码中未使用)  
  9. import webbrowser  # 导入webbrowser库,用于控制Web浏览器(但在这段代码中未使用)  
  10. import pandas  # 导入pandas库,用于数据处理和分析  
  11.   
  12. # 定义目标网页的URL  
  13. url = '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'  
  14.   
  15. # 定义请求头,用于模拟浏览器访问  
  16. 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'}  
  17.   
  18. # 发送GET请求到目标URL,并带上请求头  
  19. req = requests.get(url, headers=headers)  
  20.   
  21. # 使用BeautifulSoup解析返回的HTML内容(但实际上这步后面没有用到,因为后面直接使用pandas来解析表格)  
  22. bs = BeautifulSoup(req.content, 'html.parser')  
  23.   
  24. # 注释掉的代码是建议使用下载的静态网页进行测试,而不是直接访问网络  
  25. # bs = BeautifulSoup('名侦探柯南各集列表_百度百科.html', 'html.parser')  
  26.   
  27. # 设置pandas的显示选项,以便在控制台中更好地显示DataFrame  
  28. pandas.set_option('display.max_rows', None)  
  29. pandas.set_option('display.unicode.ambiguous_as_wide', True)  
  30. pandas.set_option('display.unicode.east_asian_width', True)  
  31. pandas.set_option('max_colwidth', 100)  
  32. pandas.set_option('expand_frame_repr', False)  
  33.   
  34. # 从URL读取表格数据,并尝试通过属性选择特定的表格(但这里的attrs可能不准确)  
  35. df = pandas.read_html(url, attrs={"log-set-param" : "table_view"})  
  36.   
  37. # 删除最后一个DataFrame(假设它是参考资料)  
  38. df.pop(len(df)-1)  
  39.   
  40. # 定义表头列表  
  41. th = ['集数', '标题', '原创', '登场']  
  42.   
  43. # 标记变量,用于识别第二个DataFrame  
  44. flag = 0  
  45.   
  46. # 遍历所有的DataFrame  
  47. for each in df:  
  48.     # 将NaN值替换为0  
  49.     each.fillna(value=0, inplace=True)  
  50.       
  51.     # 如果是第二个DataFrame,进行特殊处理  
  52.     flag += 1  
  53.     if flag == 2:  
  54.         # 将列名全部设置为空字符串  
  55.         each.columns = [''] * len(each.columns)  
  56.         # 删除前两行(假设第一行是年份,第二行是标题)  
  57.         each.drop([0, 1], inplace=True)  
  58.         continue  # 跳过后续处理,继续下一个循环  
  59.       
  60.     # 对于其他DataFrame,只删除第一行(年份)  
  61.     each.drop(0, inplace=True)  
  62.       
  63.     # 只保留需要的列  
  64.     each = each.loc[:, th]  
  65.       
  66.     # 将DataFrame转换为字符串并写入文件  
  67.     with open('优化的表格.txt', 'a+', encoding='utf-8') as f:  
  68.         f.write(str(each) + '\n')  
  69.       
  70.     # 在控制台中打印出处理后的DataFrame(用于测试)  
  71.     print(str(each))
复制代码
运行报错:找不到表格,请Python大佬指教


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

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

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

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

本版积分规则

道家人

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表