爬虫利用Xpath解析练习demo
爬取新闻页的简要信息
import requests
from lxml import etree
from lxml.etree import _Element
Base_url = "https://news.cnblogs.com"
Base_path = "/n/page/"
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36"
}
# 这里只爬取第一页,可根据实际情况更改
for i in range(1, 2):
url = f"{Base_url}{Base_path}{i}/"
with requests.get(url=url, headers=headers) as res:
# 非正常页面,直接返回状态码
if res.status_code != 200:
print(res.status_code)
break
# 清洗数据
# 用lxml解析
root: _Element = etree.HTML(res.content)
# 取出每条新闻的标签块
b = root.xpath("//div[@class='news_block']")
# 遍历 在标签块的基础上查找其他的标签元素
for ele in b:
ele: _Element
print("标题:", ele.xpath(".//h2[@class='news_entry']/a/text()")[0])
print("作者:", ele.xpath(".//div[@class='entry_footer']/a/text()")[0].strip())
print("链接:", Base_url + ele.xpath(".//h2[@class='news_entry']/a")[0].get("href"))
print("发布时间:", ele.xpath(".//div[@class='entry_footer']/span[@class='gray']/text()")[0].strip())
print("标签:", *[e.strip() for e in ele.xpath(".//div[@class='entry_footer']/span[@class='tag']/a/text()")])
print(ele.xpath(".//div[@class='entry_footer']/span[@class='view']/text()")[0].strip())
print("=" * 50)
# 部分打印内容
"""
标题: 马云澳洲见老朋友,43年前曾在西湖边合影
作者: itwriter
链接: https://news.cnblogs.com/n/736836/
发布时间: 2023-02-19 14:02
标签: 马云
33 人浏览
==================================================
标题: 微软必应计划在AI搜索中引入广告模式 或于3月公布细节
作者: itwriter
链接: https://news.cnblogs.com/n/736835/
发布时间: 2023-02-19 13:55
标签: bing
7 人浏览
==================================================
标题: 中国工程院院士王坚:我国已具备支撑ChatGPT发展的算力基础
作者: itwriter
链接: https://news.cnblogs.com/n/736834/
发布时间: 2023-02-19 13:47
标签: 王坚
13 人浏览
==================================================
标题: 微软将把必应聊天回复限制在 5 条以内,以防人工智能越界
作者: itwriter
链接: https://news.cnblogs.com/n/736833/
发布时间: 2023-02-19 13:40
标签: bing
7 人浏览
==================================================
标题: 设计师编辑成ChatGPT用户主力!程序员仅占4.4%
作者: itwriter
链接: https://news.cnblogs.com/n/736832/
发布时间: 2023-02-19 13:35
标签: ChatGPT
9 人浏览
==================================================
"""
学习练习使用,切勿过度爬取
本文来自博客园,作者:厚礼蝎,转载请注明原文链接:https://www.cnblogs.com/guangdelw/p/17134978.html