python爬取小说写入txt_python爬虫自学之路:爬取小说并保存成TXT文件

最近闲着无聊开始翻看之前看了一半的小说《明朝那些事儿》,天天用网络看好麻烦就写了个爬虫下载下来放到手机上看,下面把写爬虫的过程遇到的问题记录一下,方便以后再来找,写这个爬虫碰到的问题总共就3个,第一个是爬取到的文字是乱码怎么办;第二是xpath语法,在谷歌浏览器的插件中能找到自己需要的信息,放到爬虫中运行就什么也获取不到;第三是去掉爬到的文字中多余的部分。下面开始正文

首先还是上目标网址,经过百度发现下面网站有我需要的全文明朝那些事儿-明朝那些事儿全集在线阅读​www.mingchaonaxieshier.com

然后分析网站,思路很简单,在首页获取所有章节的url然后在到对应章节中获取自己需要的文本信息,最后保存就大功告成,按照这个思路,我们先定义三个方法

然后再来完善方法中的详细内容,第一步获取url

爬虫第一部导库就不多说了,我们用requests库来访问这个网站发现没有任何反扒措施,开开心心就拿到了所需要的网页信息,不过问题是文字部分都是乱码

这个问题好解决,只要按照网页头部信息给的编码来重新编码就可以了,所以我们的代码是下面这样

resp = requests.get(url)

resp.encoding = 'utf-8'

print(resp.text)

下面就能正常显示文字了

然后就是通过xpath来获取我们需要的url并放到一个列表里,后面遍历获取文本信息,打开开发者工具查看

所有的url信息都是在这个标签的href属性里面,然后我们的xpath语法就是这样//tbody/tr/td/a/@href

在我们的插件里面也能正确获取到信息,然后我们到程序里面试一下就懵逼了,因为获取的信息是空的

抓耳挠腮的我机智的打开了网页源代码看了起来,发现了问题所在,在网页源代码中是没有tbody这个标签的

这个标签应该是浏览器自己加上的,而源码中并没有,所以我们获取是获取不到的,这里提供给我们一个解决xpath语法无法获取信息的思路—多看看网页源码

经过一番调整获取url的函数我们最终搞定了是这样

def get_url(url):

url_list = []

resp = requests.get(url)

resp.encoding = 'utf-8'

e = etree.HTML(resp.text)

data_list = e.xpath('//table')

for data in data_list:

# print(data)

url = data.xpath('./tr/td//a/@href')[1:]

url_list.extend(url)

return url_list

如此我们就获取了所有的URL,然后就是到分章节里获取文本信息了,这个相对容易就不拿出来单写了,只说碰到的问题:在文本信息前面有个\u3000的字符是我们不要的,直接用正则替换掉,完整代码截图奉上

有问题的可以私信问我,如果需要源码也可以找我要,如果你也是小白正在学习咱们一起交流呀

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值