【Python爬虫实战】爬取网易新闻某详情页信息 1.0
文章目录
- 一.网页分析
- 二.代码实现
- 三.总结
一.网页分析
本次爬取目标网站为 https://www.163.com/dy/article/G0F6HT9A051186GP.html
爬取对象为新闻标题, 发布时间, 来源, 正文以及图片。
首先,判断目标页面获取数据方式。F12或鼠标右键检查打开"开发者模式",点击Network,刷新页面后可以看到返回了很多数据包,点击第一个可以从右侧response看到服务器返回的响应数据。复制新闻标题,Ctrl+F查找标题是否在响应数据中,结果高亮显示说明目标网页是直接通过后台服务器返回数据的。因此确定接下来请求URL地址为目标网站地址。
(同时在Elements中也定位到了标题)
接着,分析response的DOM结构,设计xpath表达式获取各个新闻元素数据。
- 新闻标题。定位到标签后,xpath表达式为
//*[@id="contain"]/div[1]/h1/text()
。
- 新闻发布时间\来源。定位到标签后,xpath表达式为
//*[@id="contain"]/div[1]/div[2]/text()
。这里发布时间和来源是同一行文字,爬取下来后在做处理。
- 新闻正文。新闻正文包括图片内容是在
div class="post_body"
标签下的所有p标签和ul标签下。因此将新闻正文可以直接定位定位到p标签下,再通过//text()
提取p标签以下的所有文本内容。而图片则通过//image/@src
提取。
二.代码实现
实现代码如下:
import requests
import re
from lxml import etreeurl = 'https://www.163.com/dy/article/G0F6HT9A051186GP.html'
headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36'
}
response = requests.get(url=url, headers=headers).text
tree = etree.HTML(response)
# 新闻标题
title = ''.join(tree.xpath('//*[@id="contain"]/div[1]/h1/text()'))
# 新闻发布时间及来源
publish = ''.join(tree.xpath('//*[@id="contain"]/div[1]/div[2]/text()')).replace(' ','').replace('\n','')
# 新闻正文
content = tree.xpath('//*[@id="content"]/div[2]/p//text()|//*[@id="content"]/div[2]/ul//text()')
content = [i for i in content if '△' not in i if re.match(r'[\u3000]+$', i) is None]
content = ''.join([b+'\n' if b.endswith(('。', '!', ';', '?')) else b for b in content ])
# 新闻图片
image = tree.xpath('//*[@id="content"]/div[2]/p//img/@src')
print('\n标题:\n', title)
print('\n发布时间及来源:\n', publish)
print('\n正文:\n', content)
print('\n图片:\n', image)
运行结果
三.总结
总体比较顺利, 难点不多,中间需要注意的点如下:
- 整体流程: 分析网页数据获取方式>找到正确的数据包>构造请求,设计xpath表达式解析数据>数据存储。
- 正文解析部分因要清晰过滤部分杂质, 使用了包括if或者多个if_else判断多种情况的列表推导式, 使代码整体看上去更加简化流畅。
- 此外,正文解析部分还涉及到①正则匹配
re.match([\u3000]+$, i)
②判断字符串的开头和结尾是否是某个字符/多个字符中的某一个。元组会逐一匹配。string.startswith/endswith(str/tuple)
【Python爬虫实战】爬取网易新闻某详情页信息 1.0相关推荐
- Python爬虫实战爬取租房网站2w+数据-链家上海区域信息(超详细)
Python爬虫实战爬取租房网站-链家上海区域信息(过程超详细) 内容可能有点啰嗦 大佬们请见谅 后面会贴代码 带火们有需求的话就用吧 正好这几天做的实验报告就直接拿过来了,我想后面应该会有人用的到吧 ...
- python爬虫实战---爬取大众点评评论
python爬虫实战-爬取大众点评评论(加密字体) 1.首先打开一个店铺找到评论 很多人学习python,不知道从何学起. 很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手. 很多 ...
- python爬虫实战-爬取视频网站下载视频至本地(selenium)
#python爬虫实战-爬取视频网站下载视频至本地(selenium) import requests from lxml import etree import json from selenium ...
- python爬虫实战-爬取微信公众号所有历史文章 - (00) 概述
http://efonfighting.imwork.net 欢迎关注微信公众号"一番码客"获取免费下载服务与源码,并及时接收最新文章推送. 最近几年随着人工智能和大数据的兴起,p ...
- Python+beautifulsoup+requests 爬取网易新闻评论
前段时间在看处理数据相关的书籍,实践中需要一些网上评论的文本数据集,所以想到爬取网易新闻底下的评论.本来想着Python+beautifulsoup(解析)+requests(抓取),最后存储在txt ...
- python爬虫实战--爬取猫眼专业版-实时票房
小白级别的爬虫入门 最近闲来无事,发现了猫眼专业版-实时票房,可以看到在猫眼上映电影的票房数据,便验证自己之前学的python爬虫,爬取数据,做成.svg文件. 爬虫开始之前 我们先来看看猫眼专业版- ...
- python爬虫实战-爬取小说
今天做一个爬虫练手的小实战:爬取顶点小说网的小说,实现下载到本地(虽然网站上本来就可以下载,不过还是自己写代码来有成就感嘛!) 爬取网站 进入官网后,点击元尊,就爬取这本书了. 我们先把整个网页爬下来 ...
- 04-python简单爬虫_爬取网易新闻
# -*- coding: utf-8 -*- import os import sys import requests import re from lxml import etree"& ...
- 爬虫实战——爬取腾讯招聘的职位信息(2020年2月2日)
爬取腾讯招聘的职位信息 思路分析 特别说明 1.获取PostId列表 2.爬取详情页面 3.保存数据 完整代码 结果展示 总结分析 思路分析 特别说明 本文以Java工作岗位信息为例进行说明,如果想爬 ...
最新文章
- UVALive5379 UVA270 Lining Up
- Java内存管理的9个小技巧
- 新华三,定义服务器虚拟化市场新格局
- Python帮你识破双11的套路
- Tarjan缩点/边双/点双
- SOA架构设计经验分享—架构、职责、数据一致性
- xml层级工具_.NET的类型层次查看工具,ClassHierarchyViewer,0.3.0.1
- day3 java的运算符及其注意问题
- jquery获取加载的html内容,jquery 获取ajax加载的html中部分内容
- Android开发中的全屏背景显示方案
- do_fork实现--下
- svn update出现database is locked
- C++天天练——两点间的距离
- 微信小程序自动定位当前位置
- 部署程序出现Failed to instantiate com.octo.captcha.service.image.DefaultManageableImageCaptchaService...
- easyui Datagrid的deleteRow多行移除问题
- 实战HTML:部分美团首页静态界面
- oracle中 greatest、east、coalesce
- 谷歌网盘扩容 - Google Drive Upgrade
- 违法占耕辅助处理软件