(1) requests安装 在cmd中,使用如下指令安装requests: pip install requests
(2) beautifulsoup的安装 pip install beautifulsoup4
(3) lxml的安装 python3.7中lxml的安装
目标网站:https://www.biqukan.com/38_38836/497783246.html
import requests from bs4 import BeautifulSoup def getOnepage(url): r = requests.get(url) #通过requests.get方法get请求页面 r.status_code #响应状态码 html = r.text #获取爬取下来的html元素 saveText('test', html) def saveText(title, context): #将内容通过文件保存下来,方便查看 fp = open(title+'.txt', 'a', encoding='utf-8') fp.write(context) fp.close() if __name__ == '__main__': target = 'https://www.biqukan.com/38_38836/497783246.html' getOnepage(target)可以看到爬取下来的hml文件已经成功保存到test.txt文件中,并且在
的标签下,唯一标签的class为’showtxt’中是小说内容,小说名称在h1标签下下面通过beautifulsoup4,把html分解,找到所需要的标签,并获取数据
#继续改写 def getOnepage(url): r = requests.get(url) #通过requests.get方法get请求页面 r.status_code #响应状态码 html = r.text #获取爬取下来的html元素 soup = BeautifulSoup(html, "lxml") title = soup.find('h1').text #找到第一个h1标签 text = soup.find_all('div', class_="showtxt")#找到所有class_为showtxt的div标签 context = text[0].text saveText(title, context)爬取内容基本满足要求,在把小说格式改写一下就ok了
观察网页可以知道,每一章节都是通过下面的网页点击进入的 那么这个连接上肯定有没章节的超链接,全部获取后,再一章一章的爬取就可以了 https://www.biqukan.com/38_38836
最后整理下代码如下
import requests from bs4 import BeautifulSoup def getOnepage(url): r = requests.get(url) #通过requests.get方法get请求页面 r.status_code #响应状态码 html = r.text #获取爬取下来的html元素 soup = BeautifulSoup(html, "lxml") title = soup.find('h1').text text = soup.find_all('div', class_="showtxt") context = text[0].text saveText(title, context.replace(' ', '\n')) def saveText(title, context): #将内容通过文件保存下来,方便查看 fp = open(title+'.txt', 'a', encoding='utf-8') fp.write(context) fp.close() def getAllurl(): target = 'https://www.biqukan.com/38_38836' r = requests.get(target) r.encoding = 'GBK' #注意:从该网页爬取的时候发现有乱码,经确认是要使用GBK的编码格式 html = r.text soup = BeautifulSoup(html, "lxml") ddList = soup.find_all('dd') for dd in ddList[0:10]: url = target.replace('/38_38836','') + dd.find('a')['href'] getOnepage(url) if __name__ == '__main__': getAllurl()爬取结果