鱼C论坛

 找回密码
 立即注册
查看: 3576|回复: 2

[已解决]Python:自己写的一个爬虫,有一个地方出错了,但是找不到原因

[复制链接]
发表于 2018-1-18 21:06:45 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 py大神 于 2018-1-18 21:18 编辑

  1. #!/usr/bin/env python
  2. # -*- coding:utf-8 -*-

  3. import urllib.request
  4. import re

  5. #这里处理小说的URL
  6. def spid(url,headers):
  7.     req = urllib.request.Request(url,headers=headers)
  8.     response = urllib.request.urlopen(req)
  9.     html = response.read().decode("gbk")

  10.     return html
  11. #这里下面三行添加URL头部,
  12. url = "http://www.31xs.org/12/12970/"
  13. headers = {"这里是headers信息"}
  14. info = spid(url,headers)

  15. #匹配目录(把每一章的URL匹配出来)
  16. re_Cata_Str = r'<dd><a href="/12/12970/.*"'
  17. re_Cata_Obj = re.compile(re_Cata_Str)
  18. re_Cata_Res = re_Cata_Obj.findall(info)

  19. #添加URL(把每一章的URL都添加进一个列表)
  20. url_List = []
  21. url_Num = 0
  22. for i in re_Cata_Res:
  23.     all_url =url + re_Cata_Res[url_Num][23:35]
  24.     url_List.append(all_url)
  25.     url_Num += 1

  26. #发起请求(根据每一章的URL发出请求)
  27. text_List = []
  28. for i in url_List:
  29.     req = urllib.request.Request(i,headers=headers)
  30.     response = urllib.request.urlopen(req)
  31.     texthtml = response.read().decode("gbk")
  32.     #匹配正文(把正文匹配出来,并添加进一个列表)
  33.     re_Text_Str = r'<p>.*?</p>'
  34.     re_Text_Obj = re.compile(re_Text_Str)
  35.     re_Text_Res = re_Text_Obj.findall(texthtml)
  36.     text_List.append(re_Text_Res)

  37. #写入文件
  38. text_Num = 0
  39. text_Num2 = 9#因为前九章是最近更新,所以这里从第一张开始
  40. with open(r"C:\Users\(__ini__)\Desktop\剑来正文.txt",'w') as f:
  41.     for i in text_List[text_Num2:]:#这里把每一章给i
  42.         text_Num2 += 1
  43.         for e in i[text_Num]:#这里把每一章的第一段给e
  44.             print(i[0],i[1],e)#按道理说这里的i[0]元素和e打印出来的结果应该是相等的,但是打印出来发现e却是i[0][0]。这是问什么?
  45.             break
  46.             f.write(e)
  47.             text_Num += 1
  48.         break
  49.             

复制代码



这是一个爬取我看的一个小说的爬虫,具体功能是根据目录爬取每一章的正文并且写入文件。问题在第52行。








最佳答案
2018-1-18 21:22:45
因为for循环中的i[text_Num]就是i[0]
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-1-18 21:22:45 From FishC Mobile | 显示全部楼层    本楼为最佳答案   
因为for循环中的i[text_Num]就是i[0]
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-19 14:56:40 | 显示全部楼层
BngThea 发表于 2018-1-18 21:22
因为for循环中的i[text_Num]就是i[0]

还真是,快被自己蠢哭了

感谢老哥!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-13 23:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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