Python网络爬虫

定义:
 -通过编写程序,模拟浏览器上网,让其去互联网上抓取数据。

爬虫在使用场景的分类:
 -通用爬虫:
  爬虫系统的重要组成部分,抓取的是一整张页面数据。
 -聚焦爬虫:
  建立在通用爬虫的基础上,抓取的是页面中特定的局部内容
 -增量式爬虫:
  检测到网站中数据更新的情况,只抓取网站中最新更新出来的数据

爬虫的矛与盾:
 -反爬机制:
  门户网站可以制定响应的策略与技术手段,防止爬虫程序进行数据爬取。
-反反爬策略:
  爬虫程序可以通过制定相关策略与技术手段,破解门户网站中的反爬机制,从而获取网站数据。

robots.txt协议:
 -君子协议。规定了网站中哪些数据可以被爬取,哪些数据不可以被爬取。

HTTP协议:
概念:
  该协议就是服务器和客户端进行数据交互的一种形式。
常用头信息:
 - User-Agent:请求载体的身份标识。
 - Connection:请求完毕后,是断开连接还是保持连接。
常用响应头信息:
 - Connection-Type:服务器响应客户端的数据类型。

HTTPS协议:
-安全的超文本传输协议
加密方式:
-对称密钥加密
-非对称密钥加密
-证书密钥加密

requests模块:python原生的网络请求模块,功能强大,效率极高。
作用:
-模拟浏览器发请求。
如何使用:
1.指定URL
2.发送请求(get、post请求)
3.获取响应数据
4.持久化存储

环境安装:
pip install requests


实战编码:
-需求:爬取搜狗页面的页面数据
代码:
import requests
if_name_ == "_main_"
 url = "搜狗的网站"
 response = requests.get(url = url)
 page_text = reponse.text
 print(page_text)
 with open('./sogou.html','w',encoding = 'utf-8') as fp:
  fp.write(page_text)
 print("succed)

-需求1.实现搜狗指定词条对应的搜索结果:
*应用UA伪装
代码:
import requests
if_name_ == "_main_"
#UA封装:将对应的User-Agent封装到一个字典里面
 headers = {
  'User-Agent':'XXX'
 }

 url = 'https://www.sogou.com/web'
#处理URL携带的参数:封装到字典中
 kw = input('enter a word')
 param = { #将参数封装到字典里面
  'quary':kw
 }
 requests.get(url = url,params = param,headers=headers)
#requests.get(url,params(参数),headers(用户标识))
#对指定URL发起的请求对应的URL是携带参数的,并且请求过程中处理了参数
pace_text = requests.text
fileName = kw+'.html'
with open(fileName,'w',encoding='utf-8')as fp
  fp.write(page_text)
print(fileName,'success')


#UA:User-Agent(请求载体身份标识)
#UA检测:门户网站的服务器会检测对应请求的载体身份标识,如果检测到请求的载体身份标识为某一款浏览器,则说明该请求为一个正常的请求,反之则为一个不正常的请求,即为爬虫请求,则服务器端可能拒绝该请求。
#UA伪装:让爬虫对应的请求载体身份标识伪装成某一款浏览器

-需求2.破解百度翻译
*post请求(携带参数)
*响应数据是一组Json数据
代码:
import requests
post_url = 'XXX'    #1.指定URL
headers = {
  'User-Agent':'XXX'
 }    #2.UA伪装
data = {
  'kw' :'dog'
 }      #3.参数处理
#4.请求发送
response = requests.post(url = url,data = data,headers = headers)
requests,post(url,data,json,headers)
#5.获取响应数据:json()返回的是obj(如果确认服务器响应数据为json类型,才可以用json()方法)
dic_obj = response.json()
print(dic_obj)
#6.进行持久化存储
fp = open('./dog.json','w',encoding = 'utf-8')
json.dump(dic_obj,fp = fp,ensure_ascii = False)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值