爬虫基础-1-爬取小说资源
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了爬虫基础-1-爬取小说资源相关的知识,希望对你有一定的参考价值。
小生博客:http://xsboke.blog.51cto.com
小生 Q Q:1770058260
-------谢谢您的参考,如有疑问,欢迎交流
使用BeautifulSoup爬取网站资源
注:此文仅供学习参考,如果该网站平凡文学负责人有异议,请留言,作者将删除此文章有关平凡文学的所有信息.
BeautifulSoup简介:
我的理解:BeautifulSoup就是用来解析html的模块,详细信息还请参考BeautifulSoup4.2.0 中文文档
随便找了一个小说网站,没有爬取文章内容,主要是理解一下BeautifulSoup4的使用方法,如果搞懂本文了,爬取文章都不是问题.
代码最后生成一个字典如下:
{‘玄幻‘:[[‘书名1‘,‘作者1‘,‘书链接1‘],
[‘书名2‘,‘作者2‘,‘书链接2‘]
],
‘恐怖‘:[[‘书名1‘,‘作者1‘,‘书链接1‘],
[‘书名2‘,‘作者2‘,‘书链接2‘]
]
}
代码正文:
请安装requests和bs4(BeautifulSoup)
from bs4 import BeautifulSoup
import requests,sys
sys.setrecursionlimit(10000) # 防止超出递归深度报错
Url_Index = ‘http://m.pfwx.com‘
r = requests.get(Url_Index)
r.encoding = ‘utf-8‘
content = r.text
soup = BeautifulSoup(content,features=‘html.parser‘)
target = soup.find(‘div‘,class_=‘nav‘) # 只获取第一个包含class=‘nav‘属性的div标签
tar = target.find_all(‘a‘) # 过滤出a标签
# 获取index的栏目
Index_Menu = {}
for so in tar:
TEXT = so.get_text()
HREF = Url_Index + so[‘href‘] # 获取href属性的值
Index_Menu[TEXT] = HREF
# 获取分类
Class_Page = Index_Menu[‘分类‘]
r = requests.get(url=Class_Page)
r.encoding = ‘utf-8‘
content = r.text
soup = BeautifulSoup(content,features=‘html.parser‘)
tag = soup.body.find_all(‘li‘,class_=‘prev‘)
Menu = {}
for so in tag:
TEXT = so.get_text() # 获取文本
HREF = so.a.attrs[‘href‘] # 获取a标签中的href属性
# 生成各个分类的Url
Category_Url = Url_Index + HREF
Menu[TEXT] = Category_Url
# 获取每种分类的书信息
for ClassName in Menu:
Book_List = []
def make(url):
‘‘‘获取所有的书信息,并且交给函数IF判断是否还有下一页,如果有则继续获取书的信息‘‘‘
r = requests.get(url=url)
content = r.text
soup = BeautifulSoup(content, features=‘html.parser‘)
target = soup.find_all(‘a‘, class_=‘blue‘)
for so in target:
BookName = so.get_text() # 书名
IMHOW_NAME = so.next_sibling.split(‘/‘)[1] # 作者名
HREF = Url_Index + so[‘href‘] # 书的链接
Book_List.append([BookName,IMHOW_NAME,HREF])
Next_Page = soup.find(‘div‘, class_=‘page‘)
IF(NextPage=Next_Page)
def IF(NextPage):
‘‘‘判断是否还有下一页,如果有则继续循环‘‘‘
for Page in NextPage.find_all(‘a‘):
if Page.get_text() == ‘下页‘:
‘‘‘判断如果还有下页,则继续获取书的信息‘‘‘
Url = Url_Index + Page[‘href‘]
make(url=Url)
url=Menu[ClassName] # 获取当前分类的URL
make(url) # 获取当前分类的所有书信息
Menu[ClassName] = Book_List # 最后生成的信息都在这个字典里面;格式{‘玄幻‘:[[‘书名1‘,‘作者1‘,‘书链接1‘],[‘书名2‘,‘作者2‘,‘书链接2‘]]}
以上是关于爬虫基础-1-爬取小说资源的主要内容,如果未能解决你的问题,请参考以下文章