python小爬虫-爬小说(html)
先挑个软柿子捏捏吧,硬的现在还不行。 就结合网页html的各种标签,爬取已在源码内的信息。就观察标签的的特点,利用bs4中的BeautifulSoup()进行获取信息。代码如下:
import requests
from bs4 import BeautifulSoup
"""
使用BeautifulSoup 解析获得的html网页
下载静态网页中的小说内容
author: goodlikeyou
2020-9-1
"""
# 一个获取小说每一章的地
def get_content():
re = requests.get('https://www.ranwen8.com/book_118574/')
html = re.text # 获取到网页信息
bs = BeautifulSoup(html, 'html5lib') # 使用BeautifulSoup进行解析
div = bs.find_all('div', class_='book_list') # 获取网页中所有div 且class = book_list的标签,获得一个列表
bs1 = BeautifulSoup(str(div[0]), 'html5lib') # 同样将的到的列表转化为字符串后,再解析一次
target = bs1.find_all('a') # 获取网页信息中 所有a标签的内容,得到的结果是一个列表,
i = 0
for each in target[12:]: # 从第十二个地址开始下载,避免重复
link = 'https://www.ranwen8.com/book_118574/' + str(each.get('href')) # 获得完整的网页连接
request = requests.get(link)
gg = request.text
df = BeautifulSoup(gg, 'html5lib')
content = df.find_all('div', class_='contentbox clear') # 此时已找到网页上的章节内容
xs_content = content[0].text.replace('\xa0' * 4, '\n\n') # .text可以去除<br>等内容附带的标签,replace则是处理 的操作
with open('mulongshi.text', 'a', encoding='utf-8') as f: # 下载到文件中
f.writelines(each.string + '\n\n')
f.writelines(xs_content)
f.write('\n\n'*2)
i += 1
print('第%d章下载完毕' % i)
return 'ok,all is over!'
if __name__ == '__main__':
xs = []
# url = 'https://www.ranwen8.com/book_118574/'
# fore_url = 'https://www.ranwen8.com/book_'
a = get_content()
具体的网页,就不贴出来了,不想多说。