Python爬虫学习(五)---- 爬虫解析器

爬虫解析器

此解析器的主要作用是:
1. 对下载下来的页面筛选出你所要的内容,方法主要是通过标签和class属性
2. 可对一些内容进行操作,比如对链接拼接让其成为一个完整的链接。

实现代码

要用到3个库,一个是BeautifulSoup(需要下载bs4库),还有re库,urllib库。

soap可以进行很强大的操作,可以对此进行深入学习。

#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
__author__ = 'Gary'

from bs4 import BeautifulSoup
import re
import urllib.parse

# 爬虫解析器

class HtmlParaser(object):

    def _get_new_urls(self, page_url, soap):
        new_urls = set()
        # 获取所有的链接(使用正则表达式)
        links = soap.find_all('a', href= re.compile(r"/item/"))
        for link in links:
            new_url = link['href']
            #  由于是不完整的url地址,所以需要拼接成完整的
            new_full_url = urllib.parse.urljoin(page_url, new_url)
            new_urls.add(new_full_url)
        return new_urls

    def _get_new_data(self, page_url, soap):
        res_data = {}

        # 返回当前url
        res_data['url'] = page_url

        # 拷贝我们需要爬取的东西,方便书写解析器
        # < dd >class ="lemmaWgt-lemmaTitle-title" >
        # < h1 > Python < / h1 >

        # 得到标题的标签
        title_node = soap.find('dd', class_= 'lemmaWgt-lemmaTitle-title').find('h1')
        res_data['title'] = title_node.get_text()

        #< div class ="lemma-summary" label-module="lemmaSummary" >
        # 得到简介的标签
        summary_node = soap.find('div', class_='lemma-summary')
        res_data['summary'] = summary_node.get_text()

        return res_data


    def parse(self, page_url, html_cont):
        if page_url is None or html_cont is None:
            return

        # 将cont 加载进soap
        soap = BeautifulSoup(html_cont, 'html.parser', from_encoding='utf-8')
        # 进行2个解析
        new_urls = self._get_new_urls(page_url, soap)
        new_data = self._get_new_data(page_url, soap)
        return  new_urls, new_data

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值