python-爬虫(可直接使用)

在这里插入图片描述

爬虫(Web Scraping)是指通过编程自动化地获取互联网上的信息的过程。爬虫的目的通常是从网页中抓取数据,进行数据分析、处理或展示。以下是爬虫的基本流程和一些重要的概念:
爬虫基本流程:
确定目标: 确定要爬取的网站或网页。
发送请求: 使用编程语言(如Python)发送HTTP请求,获取网页内容。
解析页面: 对获取的页面进行解析,提取出所需的信息。
存储数据: 将提取的信息存储到本地文件、数据库或其他数据存储方式中。
定期更新: 如果需要定期获取信息,可以设置定时运行爬虫。
爬虫的一些重要概念:
User-Agent: 请求头中的一部分,用于标识爬虫的身份。有些网站会检测User-Agent,如果检测到是爬虫,则可能限制访问。

Cookie: 网站为了识别用户身份而存储在用户本地的数据。在爬虫中,有时需要使用Cookie来模拟用户登录状态。

HTTP请求: 使用HTTP协议进行通信,通过GET或POST请求获取网页内容。

HTML解析: 使用解析库(如BeautifulSoup、lxml等)对HTML进行解析,提取所需的信息。

XPath和CSS选择器: 用于在HTML中定位元素的语法,便于提取信息。

Robots.txt: 一种标准,规定了哪些页面可以被爬虫访问,哪些不可以。

反爬虫: 一些网站采取反爬虫策略,如限制请求频率、验证码、动态加载等,爬虫需要相应地处理这些情况。

代理: 通过代理服务器发送请求,避免被封IP。

数据存储: 将爬取到的数据存储到本地文件或数据库中。

爬虫技术在数据采集、搜索引擎、舆情监测等领域有广泛的应用,但在使用爬虫时需要遵守法律法规和网站的使用规定,以及尊重隐私和版权。

示例:

 import os
import urllib.request
from urllib.parse import quote
import re
import urllib.error
import requests
import time# 设置请求头获取Cookie
get_cookie_headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) ""Chrome/92.0.4515.159 Safari/537.36 "}
get_cookie_html = "https://www.baidu.com/?tn=49055317_4_hao_pg"
get_cookie_target = requests.session()
cookie_target = get_cookie_target.get(get_cookie_html, headers=get_cookie_headers)
cookie = requests.utils.dict_from_cookiejar(cookie_target.cookies)
print(cookie)key = []
value = []
result_cookie = ""# 将Cookie转化为字符串形式
for i in cookie.keys():key.append(i)for i in cookie.values():value.append(i)for i in range(len(key)):result_cookie += key[i] + '=' + value[i] + ";"print(result_cookie)# 设置请求头
myheaders = {"Cookie": result_cookie,"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) ""Chrome/92.0.4515.159 Safari/537.36 "
}# 输入爬取的主题
pic_dir_name = input("输入想要爬取的主题:****")# 设置保存路径
base_dir = r"E:\shezu\图/"
pic_dir = base_dir + pic_dir_name# 创建文件夹
if os.path.exists(base_dir):if os.path.exists(pic_dir):print(pic_dir + "  文件已存在")else:os.mkdir(pic_dir)
else:os.mkdir(base_dir)os.mkdir(pic_dir)# 对主题进行URL编码
keyword = quote(pic_dir_name, encoding='utf-8')start_number = 0
base_url = "https://image.baidu.com/search/acjson?tn=resultjson_com&ipn=rj&queryWord=" + keyword + "&word=" + keyword + "&pn%d=&rn=60" % start_number# 正则表达式预编译
key = r'thumbURL":"(.*?)"'
pic_url = re.compile(key)number = 1# 爬取图片
while start_number < 1800:response = urllib.request.Request(base_url, headers=myheaders)result = urllib.request.urlopen(response).read().decode("utf-8")for i in re.findall(pic_url, result):print(i)try:response = urllib.request.Request(i, headers=myheaders)pic_result = urllib.request.urlopen(response).read()with open(pic_dir + "/" + pic_dir_name + str(number) + ".jpg", "wb+") as f:f.write(pic_result)number += 1time.sleep(0.5)except urllib.error.URLError:print("下载失败")start_number += 60

在这里插入图片描述

这个脚本的原理是:

  1. 获取百度图片搜索页面的Cookie。
  2. 构造百度图片搜索的URL,并设置请求头带上Cookie。
  3. 解析返回的JSON数据,提取出图片的URL。
  4. 使用获取到的图片URL,下载图片到指定目录。

需要注意的是,爬取网站内容需要遵循网站的相关规定,以及尊重图片的版权。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/205640.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

504. 七进制数

这篇文章会收录到 : 算法通关第十三关-青铜挑战数学基础问题-CSDN博客 七进制数 描述 : 给定一个整数 num&#xff0c;将其转化为 7 进制&#xff0c;并以字符串形式输出。 题目 : LeetCode 504. 七进制数 : 504. 七进制数 分析 : 我们先通过二进制想一下7进制数的变化特…

【python+Excel】读取和存储测试数据完成接口自动化测试

http_request2.py用于发起http请求 #读取多条测试用例 #1、导入requests模块 import requests #从 class_12_19.do_excel1导入read_data函数 from do_excel2 import read_data from do_excel2 import write_data from do_excel2 import count_case #定义http请求函数COOKIENon…

云端导览,数字互动 | 拓世法宝AI数字人一体机助力全新旅游时代

《中国旅行消费趋势洞察白皮书&#xff08;2023版&#xff09;》显示&#xff0c;消费者旅行习惯已从“到此一游”变为“深度在地”&#xff0c;更强调在旅游中充实自我、学习新知识。 &#xff08;《中国旅行消费趋势洞察白皮书&#xff08;2023版》截图&#xff09; 从这些资…

Agent举例与应用

什么是Agent OpenAI 应用研究主管 Lilian Weng 在一篇长文中提出了 Agent LLM&#xff08;大型语言模型&#xff09;记忆规划技能工具使用这一概念&#xff0c;并详细解释了Agent的每个模块的功能。她对Agent未来的应用前景充满信心&#xff0c;但也表明到挑战无处不在。 现…

csapp深入理解计算机系统 bomb lab(1)phase_4

使用 disas phase_4 查看phase_4的汇编代码 按照惯例&#xff0c;查看一下0x4025cf内存单元存放的字符串的值是什么 所以phase_4的输入应该是两个整数。 下面使用先猜想后验证的方法尝试找出两个整数的值&#xff0c;猜想两个整数为1,2&#xff0c;在ans.txt写入1,2&#xff0…

Linux安装jdk8【十分丝滑】

1.上传安装包到Linux&#x1f495;&#x1f495;&#x1f495; 2.使用命令解压缩&#x1f495;&#x1f495;&#x1f495; tar -zxvf 压缩文件名 3.重命名&#x1f495;&#x1f495;&#x1f495; mv 原文件名 新的文件名 4.配置环境变量&#x1f929;&#x1f929;&…

史上最全前端知识点+高频面试题合集,十二大专题,命中率高达95%

前言&#xff1a; 下面分享一些关于阿里&#xff0c;美团&#xff0c;深信服等公司的面经&#xff0c;供大家参考一下。大家也可以去收集一些其他的面试题&#xff0c;可以通过面试题来看看自己有哪里不足。也可以了解自己想去的公司会问什么问题&#xff0c;进行有针对的复习。…

C# 调用 c++ dll

C# 调用 c dll 首先 c 库 dll 要定义 代码中定义 CPP_EXPORTS #ifdef LASERSDK_EXPORTS #define CPP_EXPORTS __declspec(dllexport) #else #define CPP_EXPORTS __declspec(dllimport) #endif编译器定义 LASERSDK_EXPORTS 普通函数 c extern "C" CPP_EXPORTS …

数据挖掘 感知机

要使用感知机&#xff0c;我们首先要引入头文件&#xff0c;以下是感知机用的到头文件&#xff1a; import pandas as pd import numpy as np import matplotlib.pyplot as plt from sklearn.linear_model import Perceptron from sklearn.model_selection import train_test_…

Ubuntu Linux玩童年小霸王插卡游戏

1.下载安装模拟器 在Windows平台模拟器非常多&#xff0c;而且效果也很优秀&#xff0c;Linux平台的用户常常很羡慕&#xff0c;却因为系统的缘故&#xff0c;无法使用这样的模拟器&#xff0c;但是随着时代的发展&#xff0c;Linux平台也出现了许多优秀的模拟器&#xff0c;现…

深度学习框架:Pytorch与Keras的区别与使用方法

☁️主页 Nowl &#x1f525;专栏《机器学习实战》 《机器学习》 &#x1f4d1;君子坐而论道&#xff0c;少年起而行之 文章目录 Pytorch与Keras介绍 Pytorch 模型定义 模型编译 模型训练 输入格式 完整代码 Keras 模型定义 模型编译 模型训练 输入格式 完整代…

4G5G防爆执法记录仪、防爆智能安全帽赋能智慧燃气,可视化巡检巡线,安全生产管控

随着燃气使用的普及&#xff0c;燃气安全问题日益突出。传统应急安全问题处理方式暴露出以下问题&#xff1a; 应急预案不完善&#xff1a;目前一些燃气企业的应急预案存在实用性不高、流程不清晰等问题&#xff0c;导致在紧急情况下难以迅速启动和有效执行。 部门协同不流畅…

Less的函数的介绍

文章目录 前言描述style.less输出后言 前言 hello world欢迎来到前端的新世界 &#x1f61c;当前文章系列专栏&#xff1a;Sass和Less &#x1f431;‍&#x1f453;博主在前端领域还有很多知识和技术需要掌握&#xff0c;正在不断努力填补技术短板。(如果出现错误&#xff0c;…

数据仓库数据管理模型

数据仓库分为贴源层、数据仓库层、数据服务层&#xff0c;有人叫做数仓数据模型&#xff0c;或者叫"数据管理模型”。 我们为什么要进行数据分层管理&#xff0c;下图的优点介绍已经说得比较明确&#xff0c;再补充几点&#xff1a; 保障数据一致性&#xff1a;上层的数…

C#图像处理OpenCV开发指南(CVStar,03)——基于.NET 6的图像处理桌面程序开发实践第一步

1 Visual Studio 2022 开发基于.NET 6的OpenCV桌面程序 1.1 为什么选择.NET 6开发桌面应用&#xff1f; 选择 .NET 6&#xff08;最早称为 .NET Core&#xff09;而非 Frameworks.NET 的理由是&#xff1a;&#xff08;1&#xff09;跨平台&#xff1b;已经支持Windows,Linux…

Redis 事件轮询

1 Redis 为什么快 数据存在内存中, 直接操作内存中的数据单线程处理业务请求避免了多线的上下文切换, 锁竞争等弊端使用 IO 多路复用支撑更高的网络请求使用事件驱动模型, 通过事件通知模式, 减少不必要的等待… 这些都是 Redis 快的原因。 但是这些到了代码层面是如何实现的呢…

【UGUI】中Content Size Fitter)组件-使 UI 元素适应其内容的大小

官方文档&#xff1a;使 UI 元素适应其内容的大小 - Unity 手册 必备组件&#xff1a;Content Size Fitter 通常&#xff0c;在使用矩形变换定位 UI 元素时&#xff0c;应手动指定其位置和大小&#xff08;可选择性地包括使用父矩形变换进行拉伸的行为&#xff09;。 但是&a…

PHP项目用docker一键部署

公司新项目依赖较多&#xff0c;扩展版本参差不一&#xff0c;搭建环境复杂缓慢&#xff0c;所以搭建了一键部署的功能。 docker-compose build 构建docker docker-compose up 更新docker docker-compose up -d 后台运行docker docker exec -it docker-php-1 /bin/bas…

idea方法注释模版设置

方法上面的注释模版&#xff1a; Template text: ** Description $desc$ $param$ $return$* Aauthor yimeng* date $DATE$ $TIME$ **/param&#xff1a; groovyScript("def result ;def params \"${_1}\".replaceAll([\\\\[|\\\\]|\\\\s], ).split(,).toLis…

.net core 连接数据库,通过数据库生成Modell

1、安装EF Core Power Tools&#xff1a;打开Vs开发工具→扩展→管理扩展 2、(切记执行这步之前确保自己的代码不存在编写或者编译错误&#xff01;)安装完成后在你需要创建数据库实体的项目文件夹上面单击右键&#xff0c;找到EF Core 工具&#xff08;必须安装扩展之和才会有…