python 爬虫怎么过滤正文以外的

 我来答
灰色52056
2017-10-24 · TA获得超过514个赞
知道小有建树答主
回答量:494
采纳率:100%
帮助的人:358万
展开全部

利用bs4查找所有的div,用正则筛选出每个div里面的中文,找到中文字数最多的div就是属于正文的div了。定义一个抓取的头部抓取网页内容:

import requests
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36',
    'Host': 'blog.csdn.net'}
session = requests.session()

def getHtmlByRequests(url):
    headers.update(
        dict(Referer=url, Accept="*/*", Connection="keep-alive"))
    htmlContent = session.get(url=url, headers=headers).content
    return htmlContent.decode("utf-8", "ignore")

统计文字的正则:

import re
# 统计中文字数
def countContent(string):
    pattern = re.compile(u'[\u1100-\uFFFD]+?')
    content = pattern.findall(string)
    return content

查找每一个div,统计每一个div的文字,只保留文字最多的那个div:

# 分析页面信息
def analyzeHtml(html):
    # 初始化网页
    soup = BeautifulSoup(html, "html.parser")
    part = soup.select('div')
    match = ""
    for paragraph in part:
        content = countContent(str(paragraph))
        if len(content) > len(match):
            match = str(paragraph)
    return match

最后的调用几个函数即可:

def main():
    url = "http://blog.csdn.net/"
    html = getHtmlByRequests(url)
    mainContent = analyzeHtml(html)
    soup = BeautifulSoup(mainContent, "html.parser")
    print(soup.select('div')[0].text)
数阔八爪鱼采集器丨RPA机器人
2021-07-29 · 前往八爪鱼RPA应用市场,免费获取机器人
数阔八爪鱼采集器丨RPA机器人
向TA提问
展开全部
和评论一样,推荐bs4。
看一下bs4的中文文档其实问题基本可以解决。
1,解析html
2,find所在的class
3,get_text() 这个结果会直接过滤标签提取正文,不需要你用正则去过滤标签。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式