学习了基本语法,然后看到网上有人分享用python爬小说,自己复制代码试了一下。1、环境准备好安装BeautifulSoup4和lxml&C:/Python39/python.exe-mpipinstall--userBeautifulSoup4&C:/Python39/python.exe-mpipinstall--userlxml2。为方便下载的文件名重命名排序也防止出现非法字符无法创建文件,并增加1秒的间隔'Mozilla/5.0(WindowsNT10.0)AppleWebKit/537.36(KHTML,likeGecko)Chrome/88.0.4324.182Safari/537.36'}如果没有os.path.exists('./novel'):os创建文件夹来保存小说文本.mkdir('./novel/')path='http://www.biquw.com/book/416/'访问网站,获取页面数据response=requests.get(path)response.encoding=response.apparent_encodingprint(response.text)'''根据上图,数据存储在a标签中。a的父标签是li,li的父标签是ul标签,div标签在ul标签之上。所以想要获取整个页面的小说章节数据,需要先获取div标签。而div标签中包含class属性,我们可以通过class属性获取指定的div标签,具体见代码~'''lxml:html解析库将html代码转成python对象,python可以控制html代码soup=BeautifulSoup(response.text,'lxml')book_list=soup.find('div',class_='book_list').find_all('a')soup对象获取到batch数据后返回一个list,我们可以迭代listExtract计数=1;forbookinbook_list:book_name=book.text#获取列表数据后,需要获取文章详情页的链接,在a标签的href属性中book_url=book['href']book_info_html=requests.get(path+book_url,headers=headers)book_info_html.encoding=book_info_html.apparent_encodingsoup_part=BeautifulSoup(book_info_html.text,'lxml')信息=soup_part.find('div',id='htmlContent')name=str(count)#print(info.text)withopen('./novel/'+name.zfill(4)+'.txt','a',encoding='utf-8')asf:f.write(info.text)print('{}下载完成!'.format(book_name))count+=1time.sleep(1)根据上图,数据存放在a标签中。a的父标签是li,li的父标签是ul标签,div标签在ul标签之上。所以想要获取整个页面的小说章节数据,需要先获取div标签。而div标签中包含class属性,我们可以通过class属性获取指定的div标签,具体看代码~
