栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python爬虫

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python爬虫

一、请求库--requests 1.目标:

掌握requests发送请求的方法

掌握requesets对象的基础属性

掌握requests发送带headers的请求

掌握requests发送带参数的请求

2.重点学习requests模块,而非urllib

requests的底层实现就是urllib

requests简单易用

requests能够自动帮助我们解压(gzip压缩等)  网页内容

import requests
#1.requests的作用

#发送网络请求

url = ''        #输入访问的网址
response = requests.get(url)


#2.response的常用对象属性方法

"""
response.text                    str类型

response.content                 获取内容字节类型,需要decode编码

response.status_code             “获取状态码”

response.request.headers         响应对应的请求头

response.headers                 响应头

response.request.url             请求url地址

response.url                     响应url地址

response.cookies                 响应cookie(经过了set-cookie动作,返回cookiejar类型)

response.json                   自动将json字符串类型的响应内容转换为python对象(dict或list)

"""


#3.response.text 与 response.content 的区别


#4.案例:把网络上的图片保存到本地





3.案例:把网络上的图片保存到本地
import requests

url = "https://img1.baidu.com/it/u=1455087344,2858358853&fm=253&fmt=auto&app=138&f=JPEG?w=795&h=500"

response = requests.get(url)

data = response.content

#保存图片

with open('美女1.jpg','wb') as f:
    f.write(data) 
二、发送带headers的请求

1.why(作用):请求带上headers,模拟浏览器,欺骗服务器,获取和浏览器一致的内容

2.headers的形式为:字典

3.用法:requests.get(url,headers=headers)

4.不携带headers ,容易被对方服务器识别,通常携带headers获取数据,更加精确

import requests

headers = {
    #浏览器的信息
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36'
}

url = 'https://img2.baidu.com/it/u=4259054428,2817618542&fm=253&fmt=auto&app=138&f=JPEG?w=750&h=500'

response = requests.get(url,headers=headers).conten.decode()

5.练习:百度贴吧

#需求:根据用户输入,爬取贴吧的源码内容信息

'''
思路:
https://tieba.baidu.com/f?kw=%E7%BA%A2%E6%97%97%E8%BD%A6&ie=utf-8&pn=50
改变kw:可以切换任意贴吧
改变pn:可以任意翻页
'''

from urllib.parse import quote
import requests

user_input = ("请输入你想爬取的贴吧名称<示例:车>:")

user_page = input("请输入你想爬取多少页:<示例:4>:")

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

for i in range(int(user_page)):
    #将中文进行url编码
    url = f'https://tieba.baidu.com/f?kw={quote(user_input)}&ie=utf-8&pn={page*50}'

    #获取源码内容
    response = requests.get(url,headers=headers).content.decode()
    
    with open(f'{user_input}_{page+1}.html','w',encoding='utf-8') as f:

        f.write(response)
    print(f'{user_input}=========第{page+1}页======采集完成======logging!!!! ')
百度贴吧:程序进阶--面向对象模式
from urllib.parse import quote
import requests


class TBSpider(object):
    
    def __init__(self):
        ##爬虫原理第一步:准备数据,爬虫起始地址

        self.user_input = ("请输入你想爬取的贴吧名称<示例:车>:")
        self.user_page = input("请输入你想爬取多少页:<示例:4>:")
        self.start_url = 'https://tieba.baidu.com/f?kw={}&ie=utf-8&pn={}'
        self.headers = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36'
}


    def parse_start_url(self):
    
        #爬虫原理第二步:发送请求,获取响应

        #解决用户输入的搜索关键字进行url编码

        title = quote(self.user_input)

        #解决用户输入的翻页
        for page in range(int(self.user_page)):

            #拼接地址
            start_url = self.start_url.format(title,page*50)

            #发送请求,获取响应
            response = requests.get(url=start_url,headers=self.headers)

            #类中方法之间的调用,前面要加上self
            self.parse_response_data(response,page)


    def parse_response_data(self,response,page):
        #爬虫原理第三步:解析响应,数据提取
        data = response.content.decode()

        #类中方法之间的调用,前面要加上self
        self.parse_save_data(data,page)


    def parse_save_data(self,data,page):
        #爬虫原理第四步:保存数据
        with open(f'{self.user_input}_{page+1}.html','w','encoding='utf-8'')as f:
            f.write(data)
        print(f'{self.user_input}=====第{page+1}页=======采集完成====logging!!!!')
      

if __name__ == '__main__':
    t = TBSpider()
    t.parse_start_url()


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/997229.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号