|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 py大神 于 2018-1-18 21:18 编辑
- #!/usr/bin/env python
- # -*- coding:utf-8 -*-
- import urllib.request
- import re
- #这里处理小说的URL
- def spid(url,headers):
- req = urllib.request.Request(url,headers=headers)
- response = urllib.request.urlopen(req)
- html = response.read().decode("gbk")
- return html
- #这里下面三行添加URL头部,
- url = "http://www.31xs.org/12/12970/"
- headers = {"这里是headers信息"}
- info = spid(url,headers)
- #匹配目录(把每一章的URL匹配出来)
- re_Cata_Str = r'<dd><a href="/12/12970/.*"'
- re_Cata_Obj = re.compile(re_Cata_Str)
- re_Cata_Res = re_Cata_Obj.findall(info)
- #添加URL(把每一章的URL都添加进一个列表)
- url_List = []
- url_Num = 0
- for i in re_Cata_Res:
- all_url =url + re_Cata_Res[url_Num][23:35]
- url_List.append(all_url)
- url_Num += 1
- #发起请求(根据每一章的URL发出请求)
- text_List = []
- for i in url_List:
- req = urllib.request.Request(i,headers=headers)
- response = urllib.request.urlopen(req)
- texthtml = response.read().decode("gbk")
- #匹配正文(把正文匹配出来,并添加进一个列表)
- re_Text_Str = r'<p>.*?</p>'
- re_Text_Obj = re.compile(re_Text_Str)
- re_Text_Res = re_Text_Obj.findall(texthtml)
- text_List.append(re_Text_Res)
- #写入文件
- text_Num = 0
- text_Num2 = 9#因为前九章是最近更新,所以这里从第一张开始
- with open(r"C:\Users\(__ini__)\Desktop\剑来正文.txt",'w') as f:
- for i in text_List[text_Num2:]:#这里把每一章给i
- text_Num2 += 1
- for e in i[text_Num]:#这里把每一章的第一段给e
- print(i[0],i[1],e)#按道理说这里的i[0]元素和e打印出来的结果应该是相等的,但是打印出来发现e却是i[0][0]。这是问什么?
- break
- f.write(e)
- text_Num += 1
- break
-
复制代码
这是一个爬取我看的一个小说的爬虫,具体功能是根据目录爬取每一章的正文并且写入文件。问题在第52行。
因为for循环中的i[text_Num]就是i[0]
|
|