Python爬虫入门

简介: 网络爬虫是自动抓取网页数据的程序,通过URL获取网页源代码并用正则表达式提取所需信息。反爬机制是网站为防止爬取数据设置的障碍,而反反爬是对这些机制的对策。`robots.txt`文件规定了网站可爬取的数据。基础爬虫示例使用Python的`urllib.request`模块。HTTP协议涉及请求和响应,包括状态码、头部和主体。`Requests`模块是Python中常用的HTTP库,能方便地进行GET和POST请求。POST请求常用于隐式提交表单数据,适用于需要发送复杂数据的情况。

 一,爬虫概述

网络爬虫,顾名思义,它是一种顺着url爬取网页数据的自动化程序或者脚本。可以认为地,我们给予爬虫一个网站的url,它就会返回给我们网站的源代码,我们通过正则表达式来筛选我们需要的内容数据,这就是爬虫的目的,而所谓的反爬和反反爬策略只是这个过程的障碍与应对。

反爬机制:门户网站对爬虫的应对策略,防止爬虫对网站的数据进行爬取。

反反爬策略:对反爬机制的应对策略

Robots.txt:该文件规定了网站哪些数据是否允许爬取。

from urllib.request import urlopen
url="http://www.baidu.com"
response = urlopen(url)
print(response.read().decode("utf-8"))#拿到的是页面源代码

image.gif

上述代码就是最简单的爬虫,获取到url后返回给我们网页的源代码(页面源代码html,css,js,在浏览器中,浏览器会对代码进行渲染。)

二,Web请求过程

客户端向服务端发送请求,服务端接收到请求后进行判断,允许后进行html拼接,然后返回给客户端,客户端浏览器对html文件进行渲染形成我们所看见的页面。

实际情况中,网站通常会采用分布式,即将html文件和数据分开来返回给客户端,这样可以把服务器的压力分摊,当访问人数过多时不至于服务器宕机。

三,HTTP协议

HTTP协议(Hyper Text Transfer Protocol超文本传输协议),是用于从万维网传输超文本到本地浏览器的传送协议。

请求:

1.请求行 -> 请求方式(get/post) 请求url地址 协议

2.请求头 -> 放一些服务器要用的附加信息

3.

4.请求体 -> 放一些请求参数

响应:

1.状态行 -> 协议 状态码

2.响应头 -> 放一些客户端要使用的一些附加信息

3.

4.响应体 -> 服务器返回的真正客户端要用的内容

四,Requests模块

安装requests模块:

pip install requests

Import requests
#爬取百度源代码
url="http://www.baidu.com"
res=requests.get(url)#[Response200]200是状态码,没问题
print(res.content.decode('utf-8'))#拿到源代码
Import requests
content=input("输入你要检索的内容")
url=f"https://www.sogou.com/web?query={content}"
response=requests.get(url)
print(response.text)

image.gif

image.gif 编辑

我们发现,我们发送的请求被验证拦截下来了,这是因为我们发送请求的请求头不是设备的型号,而是python的型号,这被服务端识别并拦截。

importrequests
content=input("输入你要检索的内容")
headers=
{"User-Agent":"Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/124.0.0.0Safari/537.36Edg/124.0.0.0"}
url=f"https://www.sogou.com/web?query={content}"
response=requests.get(url,headers=headers)
print(response.text)

image.gif

我们模拟了设备的请求头,再次发送,成功骗过服务端,获取到数据。

五,Post请求

我们打开百度翻译,调成英文输入法,打开network观察XHR(ajax请求)

image.gif

看得出来,表单数据放在了XHR文件中而没有拼接在url上,所以说post是一种隐式提交,get是显式提交

import requests
import json
headers={"User-Agent":"Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/124.0.0.0Safari/537.36Edg/124.0.0.0"}
url="https://fanyi.baidu.com/sug"
data={
"kw":input("请输入一个单词")
}
response=requests.post(url,data=data)
response=json.loads(response.text)
print(response)

image.gif

输出结果:

{'errno': 0, 'data': [{'k': 'happy', 'v': 'adj. 快乐的; 幸福的; 巧妙的; 〈口〉有点醉意的'}, {'k': 'Happy', 'v': '[人名] 哈皮; [地名] [美国] 哈皮'}, {'k': 'Happy Day', 'v': '新春如意(歌名)'}, {'k': 'happy lot', 'v': '福分;福气'}, {'k': 'happy home', 'v': '快乐家庭'}], 'logid': 2211867141}

目录
相关文章
|
1月前
|
存储 数据采集 人工智能
Python编程入门:从零基础到实战应用
本文是一篇面向初学者的Python编程教程,旨在帮助读者从零开始学习Python编程语言。文章首先介绍了Python的基本概念和特点,然后通过一个简单的例子展示了如何编写Python代码。接下来,文章详细介绍了Python的数据类型、变量、运算符、控制结构、函数等基本语法知识。最后,文章通过一个实战项目——制作一个简单的计算器程序,帮助读者巩固所学知识并提高编程技能。
|
1月前
|
数据采集 存储 XML
Python爬虫:深入探索1688关键词接口获取之道
在数字化经济中,数据尤其在电商领域的价值日益凸显。1688作为中国领先的B2B平台,其关键词接口对商家至关重要。本文介绍如何通过Python爬虫技术,合法合规地获取1688关键词接口,助力商家洞察市场趋势,优化营销策略。
|
1月前
|
机器学习/深度学习 数据可视化 数据挖掘
使用Python进行数据分析的入门指南
本文将引导读者了解如何使用Python进行数据分析,从安装必要的库到执行基础的数据操作和可视化。通过本文的学习,你将能够开始自己的数据分析之旅,并掌握如何利用Python来揭示数据背后的故事。
|
3天前
|
人工智能 编译器 Python
python已经安装有其他用途如何用hbuilerx配置环境-附带实例demo-python开发入门之hbuilderx编译器如何配置python环境—hbuilderx配置python环境优雅草央千澈
python已经安装有其他用途如何用hbuilerx配置环境-附带实例demo-python开发入门之hbuilderx编译器如何配置python环境—hbuilderx配置python环境优雅草央千澈
python已经安装有其他用途如何用hbuilerx配置环境-附带实例demo-python开发入门之hbuilderx编译器如何配置python环境—hbuilderx配置python环境优雅草央千澈
|
10天前
|
数据采集 存储 缓存
如何使用缓存技术提升Python爬虫效率
如何使用缓存技术提升Python爬虫效率
|
11天前
|
数据采集 Web App开发 监控
Python爬虫:爱奇艺榜单数据的实时监控
Python爬虫:爱奇艺榜单数据的实时监控
|
20天前
|
数据采集 JSON API
如何利用Python爬虫淘宝商品详情高级版(item_get_pro)API接口及返回值解析说明
本文介绍了如何利用Python爬虫技术调用淘宝商品详情高级版API接口(item_get_pro),获取商品的详细信息,包括标题、价格、销量等。文章涵盖了环境准备、API权限申请、请求构建和返回值解析等内容,强调了数据获取的合规性和安全性。
|
25天前
|
数据采集 存储 API
利用Python爬虫获取1688关键词接口全攻略
本文介绍如何使用Python爬虫技术合法合规地获取1688关键词接口数据,包括环境准备、注册1688开发者账号、获取Access Token、构建请求URL、发送API请求、解析HTML及数据处理存储等步骤,强调遵守法律法规和合理使用爬虫技术的重要性。
|
1月前
|
IDE 程序员 开发工具
Python编程入门:打造你的第一个程序
迈出编程的第一步,就像在未知的海洋中航行。本文是你启航的指南针,带你了解Python这门语言的魅力所在,并手把手教你构建第一个属于自己的程序。从安装环境到编写代码,我们将一步步走过这段旅程。准备好了吗?让我们开始吧!
|
1月前
|
测试技术 开发者 Python
探索Python中的装饰器:从入门到实践
装饰器,在Python中是一块强大的语法糖,它允许我们在不修改原函数代码的情况下增加额外的功能。本文将通过简单易懂的语言和实例,带你一步步了解装饰器的基本概念、使用方法以及如何自定义装饰器。我们还将探讨装饰器在实战中的应用,让你能够在实际编程中灵活运用这一技术。
39 7