最简单的python爬取网页小说
坏境
爬取网址:
https://www.biquzw.la/10_10218
使用到的python库requests、lxml
这些库都可以通过pip进行安装,如pip install requests
用到的浏览器插件:xpath helper
这个插件和lxml配合使用,可代替传统的re模块,也是就是正则表达式(这个很难记)
这里给大家介绍一个超快的pip下载方式
pip install lxml
-i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
这个原理其实就是利用国内源进行下载
实现代码
import requests
from lxml import etree
url='https://www.biquzw.la/10_10218/5001501.html'
#模拟浏览器
while True:
headers={'User-Agent':'Mozilla/5.0 (Linux; Android 6.0.1; Moto G (4)) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Mobile Safari/537.36'}
#请求网页
resp=requests.get(url,headers=headers)
#编码响应得到的数据
resp.encoding='utf-8'
#筛选所需要的内容
new_resp=etree.HTML(resp.text)
info='\n'.join(new_resp.xpath("//div[@id='content']/text()"))
title=new_resp.xpath("//div[@class='bookname']/h1/text()")[0]
# print(info)
# print(title)
#找到下一章的url,利用递归进入循坏
url=new_resp.xpath("//div[@class='bottem']/a[4]/@href")[0]
with open('斗罗大陆.txt','a',encoding='utf-8') as f:
f.write(title + "\n\n" + info + "\n\n")
if url=='https://www.biquzw.la/10_10218/':
break
resp.close()
f.close()
代码需要注意的地方讲解
通过new_resp=etree.HTML
得到的是列表形式
所以后续的'\n'.join()
和[0]
都是为了得到字符串的形式
xpath括号里的其实就是筛选的内容具体的xpath helper 的语法这章就不细讲了,反正比正则表达式简单多了
如:
while循坏其实就是利用每章后面都有下一章的超链接,形成递归,从而循环
如:
最后的if条件是当下载到最后一章时,超链接会发生变化,回到最初始页面,不再是递归,需要停止(反正也下完了,必须要停下)