爬取自己的csdn主页--python

在这里插入图片描述

定义

网络爬虫(Web Spider),又被称为网页蜘蛛,是一种按照一定的规则,自动地抓取网站信息的程序或者脚本。

简介

网络蜘蛛是一个很形象的名字。如果把互联网比喻成一个蜘蛛网,那么Spider就是在网上爬来爬去的蜘蛛。网络蜘蛛是通过网页的链接地址来寻找网页,从 网站某一个页面开始,读取网页的内容,找到在网页中的其它链接地址,然后通过这些链接地址寻找下一个网页,这样一直循环下去,直到把这个网站所有的网页都抓取完为止。

爬虫流程

①先由urllib的request打开Url得到网页html文档

②浏览器打开网页源代码分析元素节点

③通过Beautiful Soup或正则表达式提取想要的数据

④存储数据到本地磁盘或数据库(抓取,分析,存储)

环境准备

需要python提供的现有功能包
requests
BeautifulSoup

pip intall requests

pip install BeautifulSoup

网站反扒机制

通过 User-Agent 来控制访问:

无论是浏览器还是爬虫程序,在向服务器发起网络请求的时候,都会发过去一个头文件:headers, 表明身份,对于爬虫程序来说,最需要注意的字段就是:User-Agent 很多网站都会建立 User-Agent 白名单,只有属于正常范围的 User-Agent 才能够正常访问。

解决方法:可以自己设置一下 User-Agent,或者更好的是,可以从一系列的 User-Agent 里随机挑出一个符合标准的使用 。

浏览器F12开发者模式:
在这里插入图片描述

设置请求头

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.104 Safari/537.36'
}

目的是让程序去模拟浏览器,通过设置代理和请求头,防止目标网站拒绝我们。

爬取自己的csdn主页

不得不说python把一个复杂的爬虫程序搞得这么简单,编写程序的人完全可以做一个傻子。

脑子还是要动起来的,最好还是要把其中的原理搞清楚,目的是,技术千变万化,原理不会变。



from bs4 import BeautifulSoup
import requests


url = 'https://blog.csdn.net/tom942067059'


def getSoup(target_url):
    # 定制请求头
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.104 Safari/537.36'
    }

    #尝试获取网页信息,r为Response对象
    r = requests.get(target_url, headers=headers)

    #返回码
    sc = r.status_code
    print(sc)

    # 设置编码格式
    r.encoding = 'utf-8'

    # 网页内容
    context = r.text
    
    # 解析网页
    soup = BeautifulSoup(context, 'lxml')
    return soup


def getContext():
    soup = getSoup(url)

    # 获取<div class='info clear'></div>所有标签项
    h = soup.find_all('div', class_='article-item-box csdn-tracking-statistics')
    #print(h)

    for item in h:
        # get blog URL
        label_url = item.find('a', class_='')
        the_url = label_url.attrs['href']
        print('URL: '+the_url)
        # get blog name
        label_name = item.find('h4', class_='')
        the_name = label_name.text
        print(the_name)

        # get blog publishe time
        label_time = item.find('div', class_='info-box d-flex align-content-center')
        time = label_time.find('span', class_='date')
        the_time = time.text
        print('发布时间:' +the_time)

        # get the read number
        read_num = label_time.find('span', class_='read-num')
        the_read_num = read_num.text
        print('访 问 量:'+the_read_num)
        print('-----------------------------------------------------------------')



if __name__ == "__main__":
    getContext()


 


在这里插入图片描述

参考

参考1
参考2

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值