自学内容网 自学内容网

【进阶系列】python简单爬虫实例

python有一个很强大的功能就是爬取网页的信息,这里是CNBlogs 网站,我们将以此网站为实例,爬取指定个页面的大标题内容。代码如下:

首先是导入库:

# 导入所需的库
import requests  # 用于发送HTTP请求
from bs4 import BeautifulSoup  # 用于解析HTML文档

这一部分是爬取1-50页的列表推导式: 


# 生成一个包含要爬取页面URL的列表
# 这里使用了列表推导式,生成了从第1页到第50页的URL(注意:实际可能是分页的URL结构不同,需要调整)
urls = [f'https://www.cnblogs.com/#p{i}' for i in range(1, 51)]

函数部分:分别是爬取页面和爬取页面内容的函数


# 定义爬取页面的函数
def craw(url):
    # 使用requests.get()方法发送GET请求
    response = requests.get(url)
    # 检查HTTP响应状态码是否为200(成功)
    if response.status_code == 200:
        # 如果请求成功,返回页面内容(文本形式)
        return response.text
    else:
        # 如果请求失败,打印错误信息并返回None
        print(f"Failed to retrieve {url}")
        return None

# 定义解析页面内容的函数
def parse(html):
    # 使用BeautifulSoup解析HTML内容,指定解析器为'html.parser'
    soup = BeautifulSoup(html, 'html.parser')
    # 查找所有具有'post-item-title'类的<a>标签(这里假设这是文章标题的链接)
    # 注意:这里的类名可能需要根据实际页面结构调整
    links = soup.find_all('a', class_='post-item-title')
    # 使用列表推导式提取每个链接的href属性和文本内容(去除多余空白)
    return [(link['href'], link.get_text(strip=True)) for link in links]

主函数部分:



# 主程序入口
if __name__ == '__main__':
    # 这里应该遍历urls列表中的每个URL,但为了示例,这里只取了第一个URL(即urls)
    # 实际上,您可能想要使用一个循环来处理所有URL
    # 注意:下面的代码示例中有个错误,应该使用urls(或其他索引)而不是urls本身
    # 正确的做法是:for url in urls: ...
    html_content = craw(urls)  # 修改为遍历或选择特定URL
    # 检查html_content是否为None(即请求是否成功)
    if html_content:
        # 如果请求成功,解析页面内容并打印结果
        for result in parse(html_content):
            print(result)  # 打印每个文章的链接和标题

结果如下:(爬取第二页数据)


未完待续(持续更新中🏆) 


原文地址:https://blog.csdn.net/bananapai/article/details/143866503

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!