第二战:Xpath爬取静态网页文章内容

本文介绍了以爬取的url为地址,爬取文章内容的方法。因代码文本信息散乱,使用正则表达式难以有效选取所需文字,故采用XPath。以具体通知文章为例,说明了通过Chrome浏览器检查选取节点位置,给出了XPath路径,最终爬取到文章内容。

本文以爬取第一战文章中获得的各个url为地址,爬取其中文章内容。

先小叙述下xpath的表达式意思

表达式描述
nodename选取此节点的所有子节点。
/从根节点选取。
//从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。
.选取当前节点。
..选取当前节点的父节点。
@选取属性。

 

 

 

 

 

 

已知url地址和header属性,那让我们来查找节点位置。

关于报送2018-2019学年第一学期实验、实习教学计划及安排的通知为例

图片:

chrome浏览器网页界面打开检查即可。

并点击

在网页文章部分进行选取点击,即可在代码中到达原文位置。

因为这代码的文本信息非常散乱,我们使用正则表达式很难有效快速的将所需文字内容全部选取。则我们使用xpath。

找到其节点位置,并精确定位。这里大伙可以自己去找找看,我直接给出我的xpath路径和代码了。

xpath路径  //div[@align="center"]//div[contains(@class,"c11807_content")]//span/text()

import requests
from lxml import etree

link = "http://jwc.taru.edu.cn/info/10610/271846.htm"
headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36",
           "Host":"jwc.taru.edu.cn"
}
r = requests.get(link,headers= headers)
r.encoding='utf-8'
text = r.text
html = etree.HTML(text)
result = html.xpath('//div[@align="center"]//div[contains(@class,"c11807_content")]//span/text()')
str = '';
for eachone in result :
    str = str + eachone
print(str)

这样我们就将文章全部给爬下来了。

转载于:https://www.cnblogs.com/exoier-ykz/p/9560202.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值