失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 春雨医生问答实例的爬取

春雨医生问答实例的爬取

时间:2022-05-31 12:52:52

相关推荐

春雨医生问答实例的爬取

春雨医生问答实例爬虫

好久不更博~

九月中旬过去了 不管怎样 我比赛也都结束了 是时候丰富自己一波了 我说了今搞出来爬虫的 gan起来

那么首先是html文档的获取

def getHTMLText(url):try:r = requests.get(url, timeout=30)r.raise_for_status()r.encoding = r.apparent_encodingreturn r.textexcept:return " "

接下来不管我们怎样解析这个html文档结构 解析完了最重要的是我们获得我们想要的内容 最重要的是正则表达式

首先正则语法 正则语法

正则语法

最全正则

然后就是怎么应用啦

Python通过re模块提供对正则表达式的支持。使用re的一般步骤是先使用pile()函数,将正则表达式的字符串形式编译为Pattern实例,然后使用Pattern实例处理文本并获得匹配结果(一个Match实例),最后使用Match实例获得信息,进行其他的操作。

举一个简单的例子,在寻找一个字符串中所有的英文字符:

import repattern = pile('[a-zA-Z]')result = pattern.findall('as3SiOPdj#@23awe')print result# ['a', 's', 'S', 'i', 'O', 'P', 'd', 'j', 'a', 'w', 'e']

那么就爬一波春雨医生

我们观察一波网页源码

可以看到问答都在i标签中

所以 分别可以这样获取

重要的就是这里

QAQ

re_wen=pile(r'(?<=<i class="ask-tag">)[\s\S]*?(?=</a>)')re_da=pile(r'(?<=<div class="qa-item qa-item-answer">)[\s\S]*?(?=</div>)')

然后就没了

上代码

#coding:utf-8import requestsfrom bs4 import BeautifulSoupimport bs4import redef getHTMLText(url):try:r = requests.get(url, timeout=30)r.raise_for_status()r.encoding = r.apparent_encodingreturn r.textexcept:return " "def main():depth = 10start_url = '/pc/search/qalist/?query=%E6%8A%91%E9%83%81 'infoList = []re_wen = pile(r'(?<=<i class="ask-tag">)[\s\S]*?(?=</a>)')re_da = pile(r'(?<=<div class="qa-item qa-item-answer">)[\s\S]*?(?=</div>)')for i in range(1, depth):url = start_url + '&page=' + str(i)html = getHTMLText(url)result_a=re_wen.findall(html)result_b=re_da.findall(html)for i in range (len(result_a)):result_a[i]=result_a[i].replace(" ","").replace(r"</i>",':').replace("\n",'').replace("\t",'')for i in range(len(result_b)):result_b[i] = result_b[i].replace('<i class="ask-tag answer-tag">', "--").replace("<span class='s-hl'>", '').replace("</span>", "").replace("\t", '').replace(" ","\n")for i in range(len(result_b)):print(str(i)+":"+result_a[i]+result_b[i])main()

如果觉得《春雨医生问答实例的爬取》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。