爬虫学习1

爬虫网站:All products | Books to Scrape - Sandbox

豆瓣网:豆瓣电影 Top 250

我们需要安装一个第三方库来解析爬取到的html内容,终端输入pip install bs4,安装成功后引入需要的模块

 我们先爬取所有的价格

import requests
from bs4 import BeautifulSoupresponse1=requests.get("http://books.toscrape.com/").text
soup =BeautifulSoup(response1,"html.parser")#需要解析html
all_price=soup.findAll("p",attrs={"class":"price_color"})#找到要提取内容的标签共同属性
for price in all_price:# print(price)print(price.string[2:])#只需要字符串第三的一个开始的内容

提取书名

import requests
from bs4 import BeautifulSoupresponse1=requests.get("http://books.toscrape.com/").text
soup =BeautifulSoup(response1,"html.parser")
all_name=soup.findAll("h3")
for name in all_name:print(name.string)下面是如果h3标签找不到的话,就需要先找到h3标签再找h3里面的a标签
import requests
from bs4 import BeautifulSoupresponse1=requests.get("http://books.toscrape.com/").text
soup =BeautifulSoup(response1,"html.parser")
all_name=soup.findAll("h3")
for name in all_name:name1=name.findAll("a")for name2 in name1:print(name2.string)

爬取豆瓣网上的所有电影名 

请求豆瓣的网站,发现返回的状态码为418

HTTP状态码418是一个非标准的HTTP状态码,被定义为"I’m a teapot"(我是一个茶壶)。这个状态码源自1998年的一个愚人节笑话,被写入了RFC 2324,Hyper Text Coffee Pot Control Protocol(超文本咖啡壶控制协议)。
在实际的Web开发中,有些网站可能会使用这个状态码作为反爬虫策略的一部分。当服务器返回418状态码时,可能是因为服务器认为你的请求是一个爬虫,而不是一个正常的用户请求。

我们需要模拟正式场景下需要传的header,定义一个确定的User-Agent

那我们开始抓包

from bs4 import  BeautifulSoup
import requests
headers={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36"
}
response=requests.get("https://movie.douban.com/top250",headers=headers).text
soup=BeautifulSoup(response,"html.parser")
all_title=soup.findAll("span",attrs={"class":"title"})
for title in all_title:title=title.string #将提取到的内容的string部分,赋值给一个新的title,但是会出现的是中文名和别名都打印出来if "/" not in title:#加个if条件,只打印出来中文名print(title)

这样的话就,提取到当前页面的25个电影名,无法提取全部,但是我们可以观察url里面有个值是控制页码的

from bs4 import  BeautifulSoup
import requests
headers={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36"
}
for start_num in range(0,250,25):response=requests.get(f"https://movie.douban.com/top250?start={start_num}",headers=headers).textsoup=BeautifulSoup(response,"html.parser")all_title=soup.findAll("span",attrs={"class":"title"})for title in all_title:title=title.stringif "/" not in title:print(title)

 

将爬取到的内容保存在html文件里 

from urllib.request import urlopenurl="http://www.baidu.com"
resp=urlopen(url)with open("baidu.html",mode="w",encoding="utf-8")as f:#创建文件f.write(resp.read().decode("utf-8"))#保存文件
print("over!")

RE模块的使用

import relis = re.findall(r"\d+","我的电话号码是:1587,他的电话号码是:25896")
print(lis)#findall返回的是一个数组it =re.finditer(r"\d+","我的电话号码是:1587,他的电话号码是:25896")#finditer返回的是一个迭代器,需要.group()
# print(it)#返回内容:
for i in it:# print(i)#返回内容如此:<re.Match object; span=(8, 12), match='1587'># <re.Match object; span=(21, 26), match='25896'>print(i.group())#返回内容158725896#search,找到一个结果就返回,返回的结果是match对象,拿数据需要.group()
ir=re.search(r"\d+","我的电话号码是:1587,他的电话号码是:25896")
print(ir.group())#match是重头开始匹配
s=re.match(r"\d+","1587,他的电话号码是:25896")
print(s.group())

 预加载正则表达式


#预加载正则表达式,把正则表达式和内容分开
obj=re.compile(r"\d+")
rey=obj.finditer("我的电话号码是:1587,他的电话号码是:25896")
for i in rey:print(i.group())

 

(?P<分组名字>.*?)

s="""[<div class="star">
<span class="rating5-t"></span>
<span class="rating_num" property="v:average">9.7</span>
<span content="10.0" property="v:best"></span>
<span>3024312人评价</span>]"""objq=re.compile("<span>(?P<star>.*?)人评价</span>",re.S)#re.S:让.能匹配换行符
result=objq.finditer(s)
for i in result:print(i.group("star"))

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

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

相关文章

HTML+CSS+JavaScript网页制作案例教程第2版-黑马程序员-第9章动手实践

文章目录 效果代码网盘 效果 代码 index.html <!doctype html> <html> <head> <meta charset"utf-8"> <title>通栏效果</title> <link rel"stylesheet" type"text/css" href"index.css"> …

linux系统更改SSH端口号配置

1.编写sshd.config cd /etc/ssh sudo cp sshd_config sshd_config.bak vim sshd_config2.重启服务 systemctl restart sshd 结束&#xff01;&#xff01;

【UE5.1 角色练习】08-物体抬升、抛出技能

前言 在上一篇&#xff08;【UE5.1 角色练习】08-传送技能&#xff09;的基础上继续实现控制物体抬升、抛出的功能。 效果 步骤 一、准备技能动画 1. 在项目设置中新建一个操作映射&#xff0c;这里命名为“Skill_GravityControl”&#xff0c;用按键4触发 2. 通过IK重定向…

aws emr启动standalone的flink集群

关键组件 Client&#xff0c;代码由客户端获取并做转换&#xff0c;之后提交给JobMangerJobManager&#xff0c;对作业进行中央调度管理&#xff0c;获取到要执行的作业后&#xff0c;会进一步处理转换&#xff0c;然后分发任务给众多的TaskManager。TaskManager&#xff0c;数…

【mysql】ubuntu下安装数据库

1更新软件包 sudo apt update //更新软件包2安装数据库 sudo apt install mysql-server//安装数据库注意后面mysql-server是个整体 3安全设置配置 sudo mysql_secure_installation//安全设置配置你要设置验证密码吗&#xff1f; 输入设置密码安全等级&#xff08;0,1&am…

nginx文件解析漏洞测试

环境条件:ubuntu14,已安装docker,docker pull ubuntu:14.04.5 一、Nginx配置 1、使用docker启动容器&#xff1a; docker run -itd --name ubuntu -p 8088:80 ubuntu:14.04.5 2、进入容器&#xff1a; docker exec -it ubuntu /bin/bash 3、然后使用以下语句安装相关环境…

C++基础:类的继承,public,private,protected

三种继承模式 在上图中: 派生继承 三种继承模式 protected模式中 父类的公有属性和保护属性的成员在子类中都会变为保护属性,只能通过父类或者子类的成员函数调用. 代码示例: #include <iostream> #include <string> using namespace std; //protected class per…

RBA认证是什么?申请RBA认证的流程是什么?

RBA认证&#xff0c;全称为Responsible Business Alliance&#xff08;责任商业联盟&#xff09;认证&#xff0c;是一个全球性的企业社会责任&#xff08;CSR&#xff09;倡议&#xff0c;旨在通过推动供应链中的社会和环境责任实践&#xff0c;确保供应链的可持续性。该认证要…

stm32cubeMX简单使用(轻松配置时钟和中断等)ST图形代码生成器

大大加快代码编写速度的图形编译工具 需要的准备材料 需要注意的几点操作 1&#xff0c;管理固件库和软件&#xff0c;方便对应不同系列的硬件 2&#xff0c;新建工程 3&#xff0c;整体流程 这个软件的本质是用来生成代码&#xff0c;方便前期初始化操作 4&#xff0c;对引…

暴雨公司受邀参加中国图象图形大会

5月24日至26日&#xff0c;备受瞩目的中国图象图形大会&#xff08;CCIG 2024&#xff09;在古都西安圆满落幕。本届大会主题为“图聚智生&#xff0c;象合慧成”&#xff0c;由中国图象图形学学会主办&#xff0c;空军军医大学、西安交通大学、西北工业大学承办&#xff0c;陕…

List基本使用(C++)

目录 1.list的介绍 2.list的使用 list的构造 list的size() 和 max_size() list遍历操作 list元素修改操作 assign()函数 push_front(),push_back 头插&#xff0c;尾插 pop_front() pop_back 头删尾删 insert()函数 swap()函数 resize()函数 clear()函数 list类数…

微信小程序图片懒加载如何实现?

微信小程序开发时&#xff0c;对于有图片的列表在加载时&#xff0c;为了用户体验更好&#xff0c;必需要对图片做懒加载。 如下图所示&#xff0c;页面在打开时&#xff0c;图片会按需加载&#xff0c;这样用户体验没有那么生硬。 以下将介绍图片懒加载的步骤&#xff1a; 1.…

什么?电脑内存又不够用了?我来拯救你!

什么&#xff1f;电脑内存又不够用了&#xff1f;我来拯救你&#xff01; 现在手机电脑的内存越来越大&#xff0c;各个公司开发的软件也是越来越肆无忌惮的挥霍这些内存空间&#xff0c;QQ 微信啥的动辄占用好几个 G 的内存。对于新购买的电脑来说&#xff0c;这也不是什么大…

构建镜像时候出现奇怪的现象时候

一、背景 构建镜像时候&#xff0c;昨天还好好的&#xff0c;今天出现奇怪的现象 二、查看现象 docker system df#cache 显示600G 三、步骤 这操作比较轻微&#xff0c;20以前的缓存清理掉 docker builder prune --filter until480h # 清除20填以前的构建缓

clickhouse——ck目录介绍

一、ck目录 1、/etc/clickhouse-server: 服务端的配置文件目录&#xff0c;包括全局配置config.xml和用户配置users.xml等。 2、/var/lib/clickhouse 默认的数据存储目录&#xff08;通常会修改默认路径配置&#xff0c;将数据保存到大容量磁盘挂载的路径&#xff09; 3、/var…

图片提取表格要怎么做?7个软件教你快速进行图片识别

图片提取表格要怎么做&#xff1f;7个软件教你快速进行图片识别 要从图片中提取表格&#xff0c;您可以使用以下七款软件来快速进行图片识别和表格提取&#xff1a; 1.一键识别王&#xff1a;这是一款专业的OCR&#xff08;光学字符识别&#xff09;软件&#xff0c;可以帮助…

重生之 SpringBoot3 入门保姆级学习(05、 Bean 装配)

重生之 SpringBoot3 入门保姆级学习&#xff08;05、 Bean 装配&#xff09; [TOC](重生之 SpringBoot3 入门保姆级学习&#xff08;05、 Bean 装配&#xff09;)2.2.1 通过 ioc.xml 文件配置2.1.2 通过 Configuration 注解配置2.2.4 测试 Bean 是否生效 新建 User 类 package…

【HarmonyOS4学习笔记】《HarmonyOS4+NEXT星河版入门到企业级实战教程》课程学习笔记(十二)

课程地址&#xff1a; 黑马程序员HarmonyOS4NEXT星河版入门到企业级实战教程&#xff0c;一套精通鸿蒙应用开发 &#xff08;本篇笔记对应课程第 19节&#xff09; P19《18.ArkUI组件-页面路由》 以访问京东页面为例&#xff0c;访问过的页面并没有消失&#xff0c;而是进入了…

使用LabVIEW开发RFID读卡器程序

使用LabVIEW开发RFID读卡器程序&#xff0c;涵盖硬件选择、初始化、数据读取与处理的整个流程。通过详细的开发步骤和示例代码&#xff0c;展示LabVIEW在快速开发和调试RFID应用中的优势&#xff0c;使用户能有效实现RFID技术在各类项目中的应用。 工作原理 RFID&#xff08;…

EMQX 的初始IP改为自己的实际IP

分类 EMQX Dashboard&#xff08;控制台&#xff09;: Dashboard提供了一个Web界面&#xff0c;用于管理和监控EMQX的运行状态。您可以通过配置dashboard.listeners.http.bind来设置Dashboard的监听地址和端口。例如&#xff0c;如果您想要Dashboard在所有网络接口上监听&#…