PythonCrowler

devtools/2025/3/9 21:41:41/

requests模块

python中原生的一款基于网络请求的模块,作用是模拟浏览器发送请求

指定url-发送请求-获取响应数据-持久化存储

pro1:爬取搜狗首页的页面数据

basic crowler

python">import requests
if __name__ == '__main__':url='https://www.sogou.com'res=requests.get(url)page_data=res.textwith open('pro01.html','w',encoding='utf-8') as file:file.write(page_data)print('结束')

UA伪装

python">import requests#UA检测User_Agent--请求载体的身份标识
#门户网站的服务器会检测对应请求的载体身份标识,如果检测到请求的载体身份标识为某一款浏览器,说明该请求是一个正常的请求
#如果请求的载体身份标识,不基于某一款浏览器, 则表示该请求为不正常的请求,则服务器端就会拒绝该次请求
#UA伪装:让爬虫对应的请求载体身份标识伪装成某一款浏览器
if __name__ == '__main__':url='https://www.sogou.com/web'#处理url携带的参数:封装到字典中#UA伪装headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'}kw=input('enter a word')param={'query':kw}#对指定的url发起的请求是携带参数的,并且请求过程中处理了参数resp=requests.get(url=url,params=param,headers=headers)page_text=resp.textfile_name=kw+'.html'with open(file_name,'w',encoding='utf-8') as file:file.write(page_text)print(file_name,'save')

post请求及存储JSON格式响应数据

python">import requests
import json
if __name__ == '__main__':post_url='https://fanyi.baidu.com/sug'#post请求参数处理kw = input('enter a word')data={'kw':kw}#UA伪装headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36'}resp=requests.post(url=post_url,data=data,headers=headers)#JSON方法返回的一个obj(前提是响应数据是JSON类型的)dic_obj=resp.json()# print(dic_obj)fp=open('pro03.json','w',encoding='utf-8')json.dump(dic_obj,fp=fp,ensure_ascii=False)

数据解析

解析分类:正则, bs4, xpath

解析的监察部文本内容都会在标签之间或者标签对应的属性中进行存储

  • 进行指定标签的定位
  • 标签或者标签对应的属性中存储的数据值进行提取解析
python">#获取图片
import requestsif __name__ == '__main__':url='https://img3.doubanio.com/view/photo/m_ratio_poster/public/p2917594343.jpg'#content返回二进制形式的图片数据img_resp=requests.get(url).contentwith open('pro01.jpg','wb') as file:file.write(img_resp)
python">#bs4进行数据解析
#实例化一个BS对象,并将页面源码数据加载到该对象中
#通过调用BS对象中相关的属性或者方法及逆行标签定位和数据提取
#对象的实例化:#将本地的html文件加载到对象中#将互联网的html文件加载到对象中
----------------------------------------------
from bs4 import BeautifulSoup
if __name__ == '__main__':fp = open('test.html','r',encoding='utf-8')soup=BeautifulSoup(fp,'lxml')print(soup.find(class_='highlight'))
----------------------------------------------
import requests
from bs4 import BeautifulSoup
#coding:utf-8
if __name__ == '__main__':url='https://www.shicimingju.com/book/sanguoyanyi.html'headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36'}page_text=requests.get(url=url,headers=headers)page_text.encoding='utf-8'#在首页解析标题与详情页的urlsoup=BeautifulSoup(page_text.text,'lxml')# print(soup)lst=soup.select('.tabli')# print(lst[0].text)fp=open('bs402.txt','w',encoding='utf-8')for i in lst:title=i.textdetail_url='https://www.shicimingju.com'+i.get('href')fp.write(title+':'+detail_url+'\n')
python">#xpath解析:最常用且最搞笑的一种解析方式
#原理:#实例化一个etree对象,且需要将被解析的页面源码数据加载到该对象中#调用etree对象中的xpath方法结合xpath表达式实现标签的定位和内容的捕获
#实例化对象:#将本地的html文档中的源码加载到etree对象中#将互联网上获取的源码对象数据加载到该对象中
-----------------------------------------------------------------------
import requests
from lxml import etree
if __name__ == '__main__':url='https://cn.58.com/ershoufang'headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36'}page_text=requests.get(url=url,headers=headers).texttree=etree.HTML(page_text)titles = tree.xpath('/html/body/div[1]/div/div/section/section[3]/section[1]/section[2]/div/a/div[2]/div[1]/div[1]/h3/@title')# 保存数据with open('xpath02.txt', 'w', encoding='utf-8') as fp:for title in titles:fp.write(title + '\n')

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

相关文章

游戏元宇宙崛起:AI代理IP驱动虚拟世界“无限可能”​

在科技飞速发展的当下,游戏元宇宙正以一种前所未有的姿态崛起,它犹如一颗璀璨的新星,吸引着无数人的目光。而AI代理IP,正成为驱动这个虚拟世界展现“无限可能”的关键力量。 「快代理|11年专注企业级代理IP云服务 —…

Redis 日常运维与故障处理

Redis 日常运维与故障处理 Redis 作为一个高性能的键值存储系统,被广泛应用于缓存、消息队列、排行榜等场景。为了确保 Redis 的稳定运行和高效性能,日常运维和故障处理至关重要。本文将详细介绍 Redis 的日常运维任务、常见故障及其解决方法,帮助运维人员有效管理和维护 R…

游戏引擎学习第140天

回顾并为今天的内容做准备 目前代码的进展到了声音混音的部分。昨天我详细解释了声音的处理方式,声音在技术上是一个非常特别的存在,但在游戏中进行声音混音的需求其实相对简单明了,所以今天的任务应该不会太具挑战性。 今天我们会编写一个…

yum修改阿里云

第一步:打开FinalShell,点击haodoop100,输入命令: sudo curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo 第二步:继续输入命令:sudo yum clean all …

安铂克科技 APPH 系列相位噪声分析仪:高性能测量的卓越之选

在当今的电子测量领域,对于信号源及各类设备的精确评估至关重要。安铂克科技的 APPH 系列相位噪声分析仪(亦称作相噪仪、相位噪声测量仪、信号源分析仪),凭借其超凡的性能与全面的功能,成为众多工程师与科研人员的理想…

分布式锁—4.Redisson的联锁和红锁二

大纲 1.Redisson联锁MultiLock概述 2.Redisson联锁MultiLock的加锁与释放锁 3.Redisson红锁RedLock的算法原理 4.Redisson红锁RedLock的源码分析 3.Redisson红锁RedLock的算法原理 (1)RedLock算法的具体流程 (2)RedLock算法的四个要点总结 (1)RedLock算法的具体流程 步骤…

VSCode详细安装步骤,适用于 Windows/macOS/Linux 系统

以下是 Visual Studio Code (VSCode) 的详细安装步骤,适用于 Windows/macOS/Linux 系统: VSCode 的详细安装步骤 一、Windows 系统安装1. 下载安装包2. 运行安装程序3. 验证安装 二、macOS 系统安装1. 方法一:官网下载安装包2. 方法二&#x…

在 Ubuntu 20.04 上交叉编译 Qt 5 应用,使其可在 Windows 运行

引言 Qt 作为一个跨平台的 GUI 框架,支持在 Linux、Windows、macOS 等多个操作系统上运行。然而,如果你的开发环境是 Ubuntu 20.04,但最终的应用需要运行在 Windows 上,那么你需要使用 交叉编译 来生成可在 Windows 上运行的 exe…