python爬取小说代码bs4和_使用python爬虫,requests(夹带BeautifulSoup的使用)爬取网络小说...

由于本人也是初学者,算是小白一枚,这里跟大家分享一下爬取网站上的小说的过程。

第一步我们需要导入我们需要的模块,比如requests,BeautifulSoup,还有正则模块re。

代码如下:import re

import requests

from bs4 import BeautifulSoup

然后我们需要找到我们需要爬取的网站,这里我随便选取了一个小说网站:

http://www.tianxiabachang.cn

接下来就是我们需要爬出小说的html,随便在这个网站找到了一本小说,就比如说《某某悍刀行》吧。url = 'http://www.tianxiabachang.cn/7_7568/'

response = requests.get(url)

response.encoding = 'utf-8'

html = response.text

这样,这就是我们获取到了这个小说网页的源码html。

但是很多时候网站都会有一定的反爬虫机制,访问几次之后我们所在的IP就会被封锁,所以我们就需要做一个简单的反反爬虫操作,那就是给你的get请求加上header,这个header可以在目标网页上找到。

某网站某地址的源

比如这个就是之前我们网页的源码,(可以摁键盘上的F12或者右击鼠标点击检查,找到之后可以刷新一次)我们需要的是Request Headers下面的User-Agent,我们复制过来,然后就成了下面的情况。

header = {

'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'

}

直到目前为止我们爬取了《某某悍刀行》的目录所在页的html了。

下一步就是找到我们爬取到的html,来进行正则处理,找到我们需要的从第一章到最后一章的所有内容soup = BeautifulSoup(html,'html.parser')

one = soup.find("div",attrs={"id":"list"})

这样我们就得到了部分我们需要的内容:

根据这个图片,我们可以从当中写出正则表达式:pattern1 = re.compile('

',re.S)

pattern2 = re.compile('html">(.*?)

',re.S)

get_url = re.findall(pattern1, str(one))

get_title = re.findall(pattern2, str(soup))

其中的pattern1 就是对文中的目录下面的网址进行的正则表达式,选取到的是7_7568(这个代表在这个网页下面的《雪中悍刀行》这本书的代码)下面的3226什么开头的数字。

而pattern2 就是网址后面的章节标题的正则表达式。

下图就是我们正则到的内容:

很明显的可以看到,前面的这些章节都是番外内容,跟我们一般看小说看的前后顺序明显不同,所以我们可以把这些不需要的删掉,直接从第一章 “小二上酒”我们爬取:for i in range(41):

del get_url[0]

del get_title[0]

接下来我们创建一个当前文件夹下的一个txt文件来保存我们爬取的东西:

with open('雪中悍刀行.txt', 'a', newline='', encoding='UTF-8-sig') as txtfile:

for i in range(len(get_url)):

reallurl = url + str(get_url[i])

# print(reallurl)

response1 = requests.get(reallurl, headers=re_header)

response1.encoding = 'utf-8'

html1 = response1.text

其中的**‘a’**是代表我们不覆盖录入,不加newline=’'的话,有可能会每个一行留一行的空白,encoding是对数据进行编码。

然后我们做了一个for循环,通过这个循环我们能重复操作,反复访问,每一章的网址下面的html,所以html1就成了每一章的html。

这个就是我们得到的一章的内容,我们对这个进行BeautifulSoup处理,因为我们只需要下面的这个东西,所以,我们这么操作:soup1 = BeautifulSoup(html1, "html.parser")

one = soup1.find("div",attrs={"id":"content"})

得到的one就是我们需要的每一章小说:

然后把我们得到的数据,保存到txt文件中就行:txtfile.write(str(get_title[i]) + "\n")

txtfile.write(str(one) + "\n")

以下就是全部代码,欢迎大家斧正!(我也保留了写代码时候的各种操作,大家是不是有相同的情况呢2333)

(第一次写,有什么不好的,大家留点情555)

from urllib.request import urlretrieve

import requests

import os

import re

from bs4 import BeautifulSoup

# url = 'http://www.xbiquge.la/13/13959/'

re_header = {

'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'

}

# url = 'http://www.tianxiabachang.cn/7_7568/3226399.html'

url = 'http://www.tianxiabachang.cn/7_7568/'

response = requests.get(url,headers = re_header)

response.encoding = 'utf-8'

html = response.text

soup = BeautifulSoup(html,'html.parser')

one = soup.find("div",attrs={"id":"list"})

# print(one)

pattern1 = re.compile('

',re.S)

pattern2 = re.compile('html">(.*?)

',re.S)

get_url = re.findall(pattern1, str(one))

get_title = re.findall(pattern2, str(soup))

# print(get_url)

# print(get_title)

#

for i in range(41):

del get_url[0]

del get_title[0]

# print(len(get_url), len(get_title))

#

with open('雪中悍刀行.txt', 'a', newline='', encoding='UTF-8-sig') as txtfile:

for i in range(len(get_url)):

reallurl = url + str(get_url[i])

# print(reallurl)

response1 = requests.get(reallurl, headers=re_header)

response1.encoding = 'utf-8'

html1 = response1.text

# print(html1)

soup1 = BeautifulSoup(html1, "html.parser")

one = soup1.find("div",attrs={"id":"content"})

# print(one)

# pattern3 = re.compile('
(.*?)
')

# endtxt = re.findall(pattern3, html1)

# print(html1)

# print(endtxt)

txtfile.write(str(get_title[i]) + "\n")

txtfile.write(str(one) + "\n")

print('下载第',i+1 ,'章完成')

这就是python文件正在运行中,爬取一章一章的内容。

祝大家学业有成升职加薪,谢谢,谢谢

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ava实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),可运行高分资源 Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值