初学python爬虫

网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫

 爬虫不需要精通python,但爬虫的原理与python的基础知识是需要掌握的,请看爬虫的流程:

 

      当我们获取了数据就可以对数据进行操作分析,应用于其他的方面。

以下是我学习的第一个爬虫案例附加代码:

 我们爬的是百度贴吧的数据

 

 第一个案例爬贴吧数据我们只用到了requests库,需要分析页面用到的BeautiSoup库等在后续的案例中讲解。

requests是python的HTTP库,它是第三方库,在使用之前我们需要cmd安装

pip install requests

安装成功后我们只需要在python代码中import以下就可以

import requests    

基本用法如下:

import requests

response = requests.get('http://www.baidu.com')
print(response.status_code)  # 打印状态码
print(response.url)          # 打印请求url
print(response.headers)      # 打印头信息
print(response.cookies)      # 打印cookie信息
print(response.text)  #以文本形式打印网页源码
print(response.content) #以字节流形式打印

运行 结果:

状态码:200

url:www.baidu.com

其他的读者可以亲自试试,看一下具体内容

1.基本的get请求

import requests

response = requests.get('http://www.baidu.com')
print(response.text)  

打印出的结果:

 带参数的请求

 可以在get方法中加入headers参数

import requests
heads = {}
heads['User-Agent'] = 'Mozilla/5.0 ' \
                          '(Macintosh; U; Intel Mac OS X 10_6_8; en-us) AppleWebKit/534.50 ' \
                          '(KHTML, like Gecko) Version/5.1 Safari/534.50'
 response = requests.get('http://www.baidu.com',headers=headers)

2.基本的POST请求

 可以在data中加入数据,发送请求时一并携带着发送

import requests

data = {'name':'tom','age':'22'}

response = requests.post('http://httpbin.org/post', data=data)

3.案例:百度贴吧爬虫并讲数据保存

思路:

#1.构造url列表

#2.遍历url,发送请求,获取响应

#3.保存

实现:

(1)定义一个运行函数run(self)

        其中实现主逻辑

        伪代码如下:

def run(self):#实现主要逻辑
        #1.构造url列表
        #2.遍历,发送请求,获取响应
            #3.保存
            

(2) 构造run(self)运行函数中各个需要的函数

       1.构造url列表函数

 def get_url_list(self):#1.构造url列表
        url_list = []
        for i in range(1000):
            url_list.append(self.url_temp.format(i*50))
        return url_list

       2.遍历,请求,响应函数

def parse_url(self,url):#发送请求获取响应
        print(url)
        response = requests.get(url,headers=self.headers)
        return response.content.decode()

       3.保存数据函数

 def save_html(self,html_str,page_num):
        file_path = "{}-第{}页.html".format(self.teiba_name,page_num)
        with open(file_path,"w",encoding="utf-8") as f:
            f.write(html_str)

以上为案例的主要逻辑以及实现各个模块的代码

完整代码:

import requests

class Tieba_spider:
    def __init__(self,tieba_name):
        self.teiba_name = tieba_name
        self.url_temp = "https://tieba.baidu.com/f?kw="+tieba_name+"&ie=utf-8&pn={}"
        self.headers = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.92 Safari/537.36'
        }

    def get_url_list(self):#1.构造url列表
        url_list = []
        for i in range(1000):
            url_list.append(self.url_temp.format(i*50))
        return url_list

    def parse_url(self,url):#发送请求获取响应
        print(url)
        response = requests.get(url,headers=self.headers)
        return response.content.decode()

    def save_html(self,html_str,page_num):
        file_path = "{}-第{}页.html".format(self.teiba_name,page_num)
        with open(file_path,"w",encoding="utf-8") as f:
            f.write(html_str)

    def run(self):#实现主要逻辑
        #1.构造url列表
        url_list = self.get_url_list()

        #2.遍历,发送请求,获取响应
        for url in url_list:
            html_str = self.parse_url(url)
            #3.保存
            page_num = url_list.index(url)+1
            self.save_html(html_str,page_num=page_num)

if __name__ == '__main__':
    tieba_spider = Tieba_spider.run("LOL")
    tieba_spider.run()

本人初学者,欢迎多多指教!!!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值