广度优先搜索算法获取网站URL,根据URL获取新闻网站主体内容的一种方法

1:我们按照广度优先搜索算法获取网站URL,一般使用广度优先搜索的思想。这是因为广度优先搜索更适合用于按层次遍历,而在爬虫中,我们通常会从一个页面开始,然后逐层深入爬取其他页面。

def crawl_website(base_url, max_depth=3):
    visited = set()
    queue = [(base_url, 0)]
    url_list = []
    while queue:
        current_url, depth = queue.pop(0)
        if depth > max_depth:
            break
        if current_url in visited:
            continue
        try:
            response = requests.get(current_url)
            visited.add(current_url)
            url_list.append(current_url)

            if response.status_code == 200:
                # 处理页面内容,这里简单输出页面标题
                soup = BeautifulSoup(response.text, 'html.parser')
                title = soup.title.text.strip()
                print(f"Depth {depth}:  - {current_url}")
                # 提取页面中的链接并加入队列
                for link in soup.find_all('a', href=True):
                    next_url = urljoin(current_url, link['href'])
                    if urlparse(next_url).netloc == urlparse(base_url).netloc:
                        queue.append((next_url, depth + 1))
        except Exception as e:
            print(f"Error crawling {current_url}: {e}")
    return url_list

2:根据获得的URL,进行新闻主体内容提取:

def getcontent(url):
    response = requests.get(url, headers={'User-Agent': 'Mozilla/5.0'}, timeout=5)
    response.encoding = 'utf-8'
    if response.status_code == 200:
        html = response.text
        extractor = GeneralNewsExtractor()
        result = extractor.extract(html)
        print(result)
    else:
        print(f"请求失败,状态码:{response.status_code}")
    return result

3:得到的result中提取需要的内容。

这种方法需要给出网站中的一个网页,不需要给出xpath,css等格式,就能够对新闻主体内容进行抽取,抽取效果目前看来还不错,不会抽取到页眉页脚元素。对于没有正文的导航页,抽取到免责声明。这也好清洗,总体看来效果不错。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值