[Python]小白学爬虫之pyquery爬取小说站 |
|
Walker
管理员
L12
• 2018-09-04 • 回复 4 • 最后编辑于2018-09-04 23:40 • 只看楼主
• 举报
|
这次爬小说站笔趣阁各大分类里的小说:www.biqutxt.com
大概能把这个站一大半爬下来
交代环境:Python3.6,pyquery
分析网页:
发现网页分类的url是 '首页地址' + '分类全拼'
eg:http://www.biqutxt.com/xuanhuanxiaoshuo/
然后大分类下的文章列表很简单
发现每页只有30本书
每页的url是 '首页地址' + '分类全拼' + '分类序号' + '_' + '页码' + '.html'
eg:http://www.biqutxt.com/xuanhuanxiaoshuo/1_1.html
爬取思路:
- 请求大分类,比如玄幻小说救赎:请求 http://www.biqutxt.com/xuanhuanxiaoshuo
- 获取大分类下小说列表的总页码
- 请求每一页的链接,获取每一页每本书的链接
- 请求每本书的链接,然后获取每一章的详细信息和书本简介
- 剔除不需要的信息,12条最新章节的信息
- 保存为TXT文件
代码太长了,这里贴一部分的,完整源码在下面有下载:
from pyquery import PyQuery as pq
import requests
from requests.exceptions import RequestException
import os
import multiprocessing
def get_index_fenlei(urls): # 获取网页内容
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) '
'AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/67.0.3396.99 Safari/537.36'
}
try:
html = requests.get(url=urls, headers=headers)
if html.status_code == 200:
return html.content.decode('gbk')
return None
except RequestException:
return None
def parse_one_page(html, page_1, url, classification): # 解析类别转换为pyquery对象
doc = pq(html)
pages = doc('#pagelink .last').text() # 获取总页码数
print("此分类共有 :", pages, '页')
list = [] # 创建列表存放页码链接
for page_2 in range(int(pages)): # 总页码循环获取每一页的链接
page_2 = page_2 + 1
page_url = url + str(page_1) + '_' + str(page_2) +'.html' #拼接页码链接
# print(page_url)
list.append(page_url)
print('页码链接获取成功-------------')
yemashu = 1
for book in list: # 遍历页码列表
print('正在请求第---', str(yemashu), '---页')
html = get_page_bookurl(book) # 请求每一页
pare_page_bookurl(html, classification) # 获取每一页书的链接信息
yemashu = yemashu + 1
def get_page_bookurl(bookurl): # 解析页码网页转换为pyquery对象,获取每本书的链接
url = bookurl
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) '
'AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/67.0.3396.99 Safari/537.36'
}
try:
html = requests.get(url=url, headers=headers)
if html.status_code == 200:
print('请求本页成功')
return html.content.decode('gbk')
return None
except RequestException:
return None
源码下载:蓝奏云链接