爬虫学习Day_01

引言

        python基础学习就先告一段落,现在登场的是爬虫学习,其实我已经学这东西已经一个星期了,但是由于生病啊,看奥运啊一堆不是很重要的事给耽误了,今天才想起来做这个笔记,其实还有一个多线程的python笔记没做,但是不急,现在用不到,到时候在学一遍。今天主要学的是urlib库和requests库。那么好,今天的笔记正式开始!现在是北京时间21点32,看这样子我说实话我还可再学bs4了。

1.什么是爬虫?

爬虫是爬取网页端的数据,对该数据进行分析,查重,对于数据分析来说有很大帮助。

但是最重要的一点,有些数据不能爬!!!!!!!!!!!!!!!!!

1.网页端.robots.txt标识下的链接不能爬

2.付费版权资源不能爬

3.隐私资源不能爬

虽然是正儿八经的工作,但是始终不能触碰法律的红线,当然还有很多不能爬的,不止我说的这些

2.爬虫流程

首先拿到需要爬取的网页连接,通过urlib库拿到一个对象,通过对象调用方法去拿到真个页面的源代码,至此爬虫过程结束。

当然可能会出现乱码状况,需要修改一下他的编码格式,pycharm默认编码格式是utf-8

3.第一个爬虫程序

#导入解析网址的函数
from urllib.request import  urlopen

#解析网址,拿到响应结果,得到一个响应对象
response = urlopen('http://www.baidu.com')
#读取到响应对象里的数据
result = response.read()
print(result)

结果:

4.简易反反爬

相对于爬虫来说,如果多次访问,会导致网站的承受能力降低,所以很多网站是不让你去爬的,所以指定了很多反爬策略,检测你是不是爬虫,今天学习一个简易案例,搜狗浏览器的搜索引擎。

import requests
query = input("请输入要查询的内容:")
url = f'https://www.sogou.com/web?query={query}'
headers = {
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36 Edg/127.0.0.0"
}
response = requests.get(url,headers= headers)
print(response.text)

在这里在请求头上家了ua,告诉浏览器我是用这个设备进行操作的,不是机器操作的。

5.post请求

在爬虫进行模拟浏览器请求的时候,常见的会有两种请求方式,一个post请求,一个是get请求。

这个学过前端就不过多讲述,主要看怎么找东西。

当输入一个a以后,会出现很多连接词,这是一个监听事件,监听输入框里面的数据,发现里面数据有改动就会发送请求,得到相关词,并用下拉的方式呈现出来,此时他发送的请求就是post请求,让我们看一下他的请求头。并拿到他的参数。

那么好,代码如下:

import requests
url = 'https://fanyi.baidu.com/sug'
s = input("请输入要翻译的内容:")

dat = {
    "kw":s
}
response = requests.post(url,data=dat)
print(response.json())

6.get请求

这个是最常用的请求。找的方法和post类似,主要说一下参数吧。用抓包工具打开刚刚的页面。

这个可能和我的代码有出入,因为我找不到那个页面了

代码如下:

# -*-coding:Utf-8 -*-
# time: 2024/7/29 下午11:21
# file: demo4.py
# author: 狗岁
import requests
start = input('请输入起始页码:')
url = 'https://movie.douban.com/j/chart/top_list'
param = {
    'type': '24',
    'interval_id': '100:90',
    'action':'',
    'start': start,
    'limit': '20'
}
header = {
    'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36 Edg/127.0.0.0',
    # 'accept-encoding':'gzip, deflate, br, zstd'
}
response = requests.get(url,params=param,headers= header)
print(response.json())
print(response.request.headers)

7.数据解析

数据解析:对于爬虫爬取数据进行筛选
三种方式:
    1.re正则表达式     常用,执行快
    2.bs4解析         简单,但是执行慢
    3.xpath解析

这三种可以混合使用,完全以为结果为向导,等完成以后,再考虑性能问题

8.正则表达式解析

'''
re解析   :正则表达式
'''
import re

# result  = re.findall(r'[a-z]+', 'runoob,google,taobao')
# print(result)

s = '''
<div class= 'Goku'><span id='1'>孙悟空</span></div>
<div class= 'two'><span id='2'>贝吉塔</span></div>
<div class= 'TlKs'><span id='3'>特兰克斯</span></div>
<div class= 'GoFAN'><span id='4'>孙悟饭</span></div>
<div class= 'GoTIAN'><span id='5'>孙悟天</span></div>
'''
#
# obj = re.compile(r"<div class='.*?'><span id='\d+'>(.*?)</span></div>",re.S)
#
# result = obj.finditer(s)

result = re.finditer(r"<div class= '.*?'><span id='(?P<str>\d+)'>(.*?)</span></div>",s,re.S)
# result= re.finditer(r"<div class=",s)
print(result)
for it in result:
    print(it.group(2))

结语

        那么好,今天的故事会……,今天的文章到此结束,现在是北京时间22点10分,我就说还可以学习嘛。今天是爬虫小白,梦想是做月入过万的男人!mai起!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值