什么是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')
还没写完