Python爬虫实战(爬取小说)

本文介绍了如何使用Python的requests和lxml库进行网页抓取,包括设置请求头、获取响应、解析HTML并提取所需信息,如标题、作者、更新时间和正文。
摘要由CSDN通过智能技术生成

什么是python?

Python是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum于1989年发明,第一个公开发行版发行于1991年。Python通常应用于各种领域,是一种通用语言,无论是从网站、游戏开发、机器人,人工智能,大数据,云计算或是一些高科技的航天飞机控制都可以用到python语言。

什么是爬虫?

爬虫是一种自动化程序,可以模拟人类的行为,从互联网上抓取大量的数据它可以在一 定时间内抓取数百万个网页,并将这些数据存储在本地或云端数据库中,以便后续处理和 分析。

实战

需使用的库

1.requests

Requests是用python语言基于urllib编写的,采用的是Apache2 Licensed开源协议的HTTP库, requests是python实现的最简单易用的HTTP库。

2.lxml

lxml是一个用于Python的XML和HTML处理库,它提供了高效、灵活和易于使用的API,用于解析、操作和生成XML和HTML文档。lxml基于libxml2和libxslt C库,因此在处理大型XML和HTML文档时,它具有优异的性能。

pip install requests      安装requests库
pip install lxml          安装lxml库

代码实现

以《全民御兽:开局触摸SSS级恶魔蛋》一文为例

传送门

1.导入库
import requests
from lxml import etree
2.地址及请求头
url = "https://www.xlewen4.com/139/139020/"
headers = {
    'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36 Edg/119.0.0.0'
}

请求头从浏览器中获取,一般包括user-agent , referrer , cookies等

在Google chrome浏览器中按F12打开开发者工具,再NetWork中的第一个里,翻到最下面查看并复制(没有则刷新网页)

3.请求响应并编码为utf-8
resp = requests.get(url,headers = headers)
trees = etree.HTML(resp.text.encode('utf-8'))
4.找到xpath

找到标题在网页源代码中的位置,右键Copy,复制full xpath

会得到如下一段

/html/body/div[1]/div[5]/div[1]/div[2]/div[1]/div[1]/h1/text()# /text()自己加,获取文本的意思

按照如上方式,分别获取标题,作者,更新时间和简介

如下

/html/body/div[1]/div[5]/div[1]/div[2]/div[1]/div[1]/h1/text()
/html/body/div[1]/div[5]/div[1]/div[2]/div[1]/div[1]/p[1]/a/text()
/html/body/div[1]/div[5]/div[1]/div[2]/div[1]/div[1]/p[3]/text()
/html/body/div[1]/div[5]/div[1]/div[2]/div[1]/div[2]/text()

输出验证

title = trees.xpath('/html/body/div[1]/div[5]/div[1]/div[2]/div[1]/div[1]/h1/text()')[0]
author = trees.xpath('/html/body/div[1]/div[5]/div[1]/div[2]/div[1]/div[1]/p[1]/a/text()')[0]
update = trees.xpath('/html/body/div[1]/div[5]/div[1]/div[2]/div[1]/div[1]/p[3]/text()')[0]
instruction = trees.xpath('/html/body/div[1]/div[5]/div[1]/div[2]/div[1]/div[2]/text()')[0]
print(title)
print(author)
print(update)
print(instruction)

进入到第一章,以同样的方式获取正文的xpath(注意,这里复制的是xpath而不是full xpath)

chapters = trees.xpath('//*[@id="content"]/text()')[0]# 把复制内容中text()后的[1]去掉
print(chapters)# chapters是一个列表,在后面加索引更方便测试

输出标题,遍历列表并输出文章内容

ctitle = trees.xpath('//*[@id="main"]/div/div/div[2]/h1/text()')[0]
chapters = trees.xpath('//*[@id="content"]/text()')
print(ctitle)
print('\n')
for i in chapters:
    print(i)
    print('\n')

还没写完

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值