怎么爬取一个网页某个div 的class里的所有链接

使用 Python 的 requests 和 BeautifulSoup 库进行操作,怎么爬取一个网页某个div 的class里的所有链接?

  • 建议你看下这篇博客👉 :python中用requests库和BeautifulSoup库爬的大学排名
  • 除此之外, 这篇博客: Python下基于requests及BeautifulSoup构建网络爬虫中的 案例 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 假设我要http://maoyan.com/board/4猫眼电影的top100电影的相关信息,如下截图:
    这里写图片描述

    获取电影的标题及url。

  • 您还可以看一下 郭宏志老师的Python爬虫实战(Requests+BeautifulSoup版)课程中的 课程简介小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    我可以根据参考资料中的代码,结合问题中给出的具体信息来解决问题。假设要爬取的网页URL为'https://example.com',要抓取的div元素的class为'link-div',需要抓取所有链接的绝对链接。

    1. 首先导入需要用到的库:
    import requests
    from bs4 import BeautifulSoup
    
    1. 定义一个函数get_links(),用来获取所有链接
    def get_links(url):
        response = requests.get(url)
        soup = BeautifulSoup(response.content, 'html.parser')
        divs = soup.find_all('div', {'class': 'link-div'})
        links = []
        for div in divs:
            for a in div.find_all('a'):
                link = a.get('href')
                if link.startswith('http'):
                    links.append(link)
                else:
                    links.append(url+link)
        return links
    

    这个函数首先发送GET请求获取网页内容,然后使用BeautifulSoup解析网页内容。接着查找所有class为'link-div'的div元素,再在这些div元素中查找所有a标签,最后将a标签中href属性开头为'http'的绝对链接和其他相对链接拼接成绝对链接后存储到列表中。

    1. 调用get_links()函数获取所有链接
    all_links = get_links('https://example.com')
    

    这样就可以获取到所有链接了,可以进一步处理或者直接输出。

    如果要进一步提取链接对应的页面内容,可以在for循环中使用requests.get()请求链接并用BeautifulSoup解析内容,然后进行相应的数据抓取和处理。