上文我们说到了怎么爬到网页,但是其实我们最关心的还是怎得到我们需要的数据?上文链接 我们首先需要知道这段文字在哪里 可以看到这里有3个 打开 后来实际操作的时候发现,他不是所有的都是用的 那么分析就已经可以结束了,开始上代码 然后是最关键的一句话 那么根据我们的需要来写模式串: 模式串就写完了 最后可以看一下结果: 因为没有匹配标点,所以就看起来有点怪,但是不影响结果嘛。 之后会继续更新爬取图片,可以继续关注一下
简单的python爬虫 (二)
比如我们需要提取 相关文本 来确定安徽的疫情情况,也就是下图的正文部分网页分析
按 f12
p标签
,分别对应了三个段落
这里以一个p
为例,
p标签
,刚好发现这里有很多span
的标签,而每个span
里面就是我们需要的文本
2020年 5 月 31 ……span
标签,有些是<font>
啊什么的,索性我就用其他特征比如
>???<
,头和尾一定是 ‘>’ 和 ‘<’ ,问号是某种特征比如汉字,数字
这里提取出 中间正文 的部分,也就是上面红色框框的内容 不是橙色嗷 ,防止后面操作的时候出现多余的内容start_str = '<div class="wzcon j-fontContent clearfix">' s = content.find(start_str) # find函数会返回一个下标,是这段字符串在content里的位置 end_str = '</div>' e = content.find(end_str, s) # 第二个参数是从s的位置开始找,返回找到的第一个字串的位置 # 找到开始的位置和结束的位置 # 把这段提取出来,从s到e key = content[s:e]
用 正则表达式 进行内容提取
findall函数是找到全部的符合“模式”的字串,返回结果是一个list。
这里的第一个参数是所谓的“模式”,也就是上文所说的 >???<
首先是中文,用unicode码表示,范围在 4e00 – 9fa5, 因为是unicode码,所以前面加上 u
又因为中文至少匹配一次,所以用 +
还需要匹配数字,也就是0-9,当然有时候会表示时间那么中间会有 “0-24时”这样的文本,所以匹配数字或者匹配 “-” ,也是因为至少匹配一次,所以用 +
数字和汉字中间用|
或连接起来print(t)
然后就很简单的把前面多余的“>”和后面多余的“<”去掉就行了全部代码
import requests as rq import re # Part1 url = "https://wjw.ah.gov.cn/xwzx/gzdt/53195761.html" html = rq.get(url) html.encoding = 'utf-8' status = html.status_code content = html.text print(status) # Part2 start_str = '<div class="wzcon j-fontContent clearfix">' s = content.find(start_str) end_str = '</div>' e = content.find(end_str, s) key = content[s:e] # Part3 t = re.findall('>[0-9,-]+|[u4e00-u9fa5]+<', key) text = "" for i in t: if i[0] == '>': i = i[1:] if i[-1] == '<': i = i[0:-1] text += i print(text)
2020年5月31日0-24安徽省报告无新增本地无新增本地疑似病例截至5月31日24安徽省累计报告本地确诊病例990治愈出院984例累计报告境外输入确诊病例1例治愈出院1例累计报告死亡病例6尚在医学观察39累计医学观察293242020年5月31日0-24安徽省报告无转为确诊0解除隔离0截至5月31日24全省无症状感染者均已解除医学观察
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算