爬虫基础简介

devtools/2024/10/20 23:57:35/

爬虫基础简介

爬虫的定义:

通过编写程序,模拟浏览器上网,然后让其去互联网上抓取数据的过程。

爬虫的价值:

-实际应用 -就业

爬虫的合法性:

-在法律中不被禁止 -具有违法风险

爬虫带来的风险可以体现在如下2个方面:

-爬虫干扰了被访问网站的正常运营

-爬虫抓取了受到法律保护的特定类型的数据或信息

如何在使用编写爬虫的过程中避免触犯法律:

-时常优化自己的程序,避免干扰被访问网站的政策运行

-在使用传播爬取到的数据时,审查爬取到的内容,如果发现了设计到用户隐私商业机密等敏感内容需要立刻停止爬取和传播。

爬虫在使用场景中的分类:

-通用爬虫:搜索引擎抓取系统的重要组成部分,抓取的是一整张页面数据

-聚焦爬虫:是建立在通用爬虫的基础之上,抓取的是页面中特定的局部内容

-增量式爬虫:监测网站中数据更新的情况,只会爬取网站中最新更新出来的数据

爬虫的矛与盾

反爬机制

相关的门户网站,可以通过制定相应的策略或者技术手段,防止爬虫程序进行网站数据的爬取

反反爬策略

爬虫程序可以通过制定相关的策略或者技术手段,破解门户网站中具备的反爬机制,从而可以获取门户网站的相关信息。

robots.txt协议

规定了网站中哪些数据可以被爬虫爬取,哪些数据不可以被爬取。

http协议
  • 概念:服务器与客户端进行数据交互的一种形式。

  • 常用请求头信息:

    ​ ①User-Agent:表示请求载体的身份标识

    ​ ②Connection:请求完毕后,是断开连接还是保持连接

  • 常用响应头信息

    ​ ①Content-Type:服务器响应回客户端的数据类型

https协议

安全的超文本传输协议

  • 加密方式:

    ​ ①对称密钥加密

    ​ ②非对称密钥加密

    ​ ③证书密钥加密

requests模块

  • 概念:python中原生的一款基于网络请求的模块,功能非常强大,简单便捷,效率极高。
  • 作用:模拟浏览器发请求
  • 如何使用:①指定url ②发起请求 ③获取响应数据 ④持久化存储响应数据
  • 环境安装:pip install requests
  • 实战编码:需求:爬取搜狗首页的页面数据

爬取搜狗首页的页面数据

python">#需求:爬取搜狗首页的页面数据
import requests
if __name__=="__main__":#第一步:指定urlurl='https://www.sogou.com/'#第二步:发起请求#get方法会返回一个响应对象response=requests.get(url=url)#第三步:获取响应数据 text返回的是字符串形式的数据page_text=response.textprint(page_text)#第四步:持久化存储with open('./sogou.html','w',encoding='utf-8') as fp:fp.write(page_text)

爬取搜狗指定词条对应的搜集结果页面(简易网页采集器)

python">#反爬机制:UA检测:门户网站的服务器会检测对应请求的载体身份标识,
# 如果检测到请求的载体身份标识为某一款浏览器说明该请求是一个正常的请求。
# 如果检测到请求的载体身份标识不是基于某一款浏览器,则该请求为不正常的请求(爬虫),
#则服务器端可能拒绝该请求
#UA:User-Agent(请求载体的身份标识)
#反反爬策略:UA伪装:让爬虫对应的请求载体身份标识伪装成某一款浏览器import requests#UA伪装:将对应的User-Agent封装到一个字典中
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'
}
url = 'https://www.sogou.com/web'
#处理url携带的参数:封装到字典中
kw = input('enter a word:')
param = {'query':kw
}
#对指定的url发起的请求是携带参数的,并且请求过程中处理了参数
response = requests.get(url=url,params=param,headers=headers)
#获取响应数据
page_text = response.text
fileName = kw+'.html'
with open(fileName,'w',encoding='utf-8') as fp:fp.write(page_text)
print(fileName,'保存成功')

破解百度翻译

python">#破解百度翻译
#post请求(携带了参数)
#响应数据是一组json数据
import requests
import json
post_url='https://fanyi.baidu.com/sug'
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'
}
#post请求参数处理
word=input('enter a word')
data={'kw':word
}
#UA伪装
response=requests.post(url=post_url,data=data,headers=headers)
#获取响应数据:json()方法返回的是obj(如果确认返回数据是json类型的,才可以用json)
dic_obj=response.json()#进行持久化存储
fileName=word+'.json'
fp=open(fileName,'w',encoding='utf-8')
json.dump(dic_obj,fp=fp,ensure_ascii=False)
print('over')

爬取豆瓣电影分类排行榜

python">import requests
import json
url='https://movie.douban.com/j/chart/top_list?'
param={'type': '24','interval_id': '100:90','action':'',#start表示从库中的第几部电影去取 limit表示取多少部'start': '0','limit': '20',
}
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=url,params=param,headers=headers)
list_data=response.json()
fp=open('./douban.json','w',encoding='utf-8')
json.dump(list_data,fp,ensure_ascii=False)
print('over')

爬取肯德基餐厅查询

python">import requests
url='https://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?op=keyword'
param={'cname': '南京','pid':'','keyword': '北京','pageIndex':'1','pageSize': '10',
}
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=url,params=param,headers=headers)
page_text=response.text
with open('KFC',mode='w',encoding='utf-8') as f:f.write(page_text)
print('over')

http://www.ppmy.cn/devtools/103997.html

相关文章

《软件工程导论》(第6版)第3章 需求分析 复习笔记

第3章 需求分析 一、需求分析的相关概念 1.定义 需求分析是软件定义时期的最后一个阶段,它的基本任务是准确地回答“系统必须做什么”这个问题,即对目标系统提出完整、准确、清晰、具体的要求。在需求分析阶段结束之前,系统分析…

基于单片机的水箱水质监测系统设计

本设计基于STM32F103C8T6为核心控制器设计了水质监测系统,选用DS18B20温度传感器对水箱水体温度进行采集;E-201-C PH传感器获取水体PH值;选用TS-300B浊度传感器检测水体浊度;采用YW01液位传感器获取水位,当检测水位低于…

CSS优化实践

在构建高性能网站时,CSS的优化是不可忽视的环节。通过以下几个实践方法,你可以显著提升页面加载速度和响应能力,从而为用户提供更流畅的体验。本文将详细介绍一些有效的CSS性能优化技巧。 1. 压缩和合并CSS 减少CSS文件的大小是优化性能的首…

MySQL中日期和时间戳的转换:字符到DATE和TIMESTAMP的相互转换

在MySQL中,经常需要在 DATE、TIMESTAMP 和字符串之间进行相互转换。以下是一些常见的转换方法: 1. 字符串到日期/时间类型 字符串转 DATE: 使用 STR_TO_DATE() 函数将字符串转换为 DATE 类型。你需要提供字符串的格式。 SELECT STR_TO_DATE(2024-08-24,…

【区块链 + 智慧文旅】城商行旅游金融联盟:旅游金融联盟平台 | FISCO BCOS应用案例

深圳优讯基于FISCO BCOS搭建面向联盟成员间使用的开 放式客户服务平台,平台于2018年6月底上线。 成员机构之间共享产品、流量、征信和金融资源,整合旅游产业链资源,实现跨地域的旅游金融协作。

数据世界的新篇章:精通INSERT INTO数据插入艺术

标题:数据世界的新篇章:精通INSERT INTO数据插入艺术 在数据库管理的宏伟画卷中,INSERT INTO语句扮演着至关重要的角色。它是将新数据记录插入到表中的基石。本文将带领你深入理解INSERT INTO语句的精髓,并通过丰富的代码示例&am…

使用dom4j.jar包读取xml内的标签等信息

1.Xml文件 <?xml version"1.0" encoding"utf-8"?><users><user1><name>张三</name><age>22</age><sex>男</sex></user1><user2><name>李四</name><age>21</ag…

STM32 - LED流水灯

主要功能&#xff1a;两个OLED的闪烁&#xff08;PE5和PB5&#xff09;&#xff0c;间隔500ms。 可以继续增加更多的OLED灯。 下面为主要代码main.c&#xff1a; #include "stm32f10x.h" // Device header #include "Delay.h" int mai…