爬虫学习2:爬虫爬取网页的信息与图片的方法
爬虫爬取网页的信息与图片的方法
import requestshead = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 Edg/126.0.0.0"
}
# 这是get请求带参数的模式
def get_param():# 1、urlurl = "https://www.sogou.com/web?"# 2、发送请求 get带参数使用params参数response = requests.get(url, headers=head, params={"query": "刘亦菲"})# 3、获取想要的数据with open("./dilireba.html", "w", encoding="utf8") as fp:fp.write(response.text)print(type(response.text))pass
get_param()
import requests
def post_data():# 1、urlurl = 'https://fanyi.baidu.com/sug'# 2、发送请求response = requests.post(url, headers=head, data={"kw": "dog"})# 获取想要的数据print(response.json())
post_data()
import requests
from lxml import etree
if __name__ == '__main__':tree = etree.parse("./test.html")#读取文件# xpath返回的都是列表# / 标识一个层级print(tree.xpath("/html/body/div/p"))#找到想要数据的位置print(tree.xpath("/html/head/title"))# 定位百里守约 索引定位 从1开始print(tree.xpath("/html/body/div[1]/p"))#读取第一个div的pprint(tree.xpath("/html/body/div/p[1]"))#读取body下面所有div下的第一个p#print(tree.xpath("/html/body/div[2]/a[2]"))print(tree.xpath("/html/body/div[3]/ul/li[3]/a"))## # // 标识多个层级 属性定位 attr = class id# 定位李清照print(tree.xpath("//div[@class='song']/p[1]"))#查看class或id 对应的信息是不是独一无二的,如是采用div[@class='song']这种形式,如不是查看其上一级是不是独一无二的。print(tree.xpath("//div[@class='song']/a[@class='du']"))# # 取所有的li标签print(tree.xpath("//div[@class='tang']/ul/li"))# # 取li标签内的所有a标签for li in tree.xpath("//div[@class='tang']/ul/li"):try:#数据正确print("".join(li.xpath("./a/text()")))#将列表形式变成字符串形式except Exception as e:#数据失败,执行下一个,不会影响其他数据执行pass## # 取标签下的直系文本内容print(tree.xpath("/html/body/div[1]/p/text()"))# 取标签下的所有文本print(tree.xpath("/html/body/div[2]//text()"))# 取标签内的属性值 @attr_nameprint(tree.xpath("//div[@class='song']/img/@src"))
test.html文件
<html lang="en"><head><meta charset="UTF-8" /><title>测试bs4</title></head><body><div><p>百里守约</p></div><div class="song">你好<p>李清照</p><p>王安石</p><p>苏轼</p><p>柳宗元</p><a href="http://www.song.com/" title="赵匡胤" target="_self"><span>this is span</span>宋朝是最强大的王朝,不是军队的强大,而是经济很强大,国民都很有钱</a><a href="" class="du">总为浮云能蔽日,长安不见使人愁</a><img src="http://www.baidu.com/meinv.jpg" alt="" /></div><div class="tang"><ul>清明时节雨纷纷,路上行人欲断魂<li><a href="http://www.baidu.com" title="qing">清明时节雨纷纷,路上行人欲断魂,借问酒家何处有,牧童遥指杏花村</a></li><li><a href="http://www.163.com" title="qin">秦时明月汉时关,万里长征人未还,但使龙城飞将在,不教胡马度阴山</a></li><li><a href="http://www.126.com" alt="qi">岐王宅里寻常见,崔九堂前几度闻,正是江南好风景,落花时节又逢君</a></li><li><a href="http://www.sina.com" class="du">杜甫</a></li><li><a href="http://www.dudu.com" class="du">杜牧</a></li><li><b>杜小月</b></li><li><i>度蜜月</i></li><li><a href="http://www.haha.com" id="feng">凤凰台上凤凰游,凤去台空江自流,吴宫花草埋幽径,晋代衣冠成古丘</a></li></ul></div></body>
</html>
# pip install fake_useragent
import timeimport requests
import fake_useragent
from lxml import etree
import reif __name__ == '__main__':# UA伪装head = {# "User-Agent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 Edg/126.0.0.0""User-Agent": fake_useragent.UserAgent().random}# 打开一个文件写入数据fp = open("./doubanFilm.txt", "w", encoding="utf8")# 1、url# url = "https://movie.douban.com/top250"# url2 = "https://movie.douban.com/top250?start=25&filter="# url3 = "https://movie.douban.com/top250?start=50&filter="for i in range(0, 250, 25):#所有网页地址url = f"https://movie.douban.com/top250?start={i}&filter="time.sleep(5)# 2、发送请求response = requests.get(url, headers=head)# 3、获取想要的数据res_text = response.text# 4、数据解析tree = etree.HTML(res_text)# 定位所有的li标签li_list = tree.xpath("//ol[@class='grid_view']/li") # 所有的li标签,包含信息for li in li_list:film_name = "".join(li.xpath(".//span[@class='title'][1]/text()")) # 改成字符串形式director_actor_y_country_type = "".join(li.xpath(".//div[@class='bd']/p[1]/text()"))score = "".join(li.xpath(".//span[@class='rating_num']/text()"))quote = "".join(li.xpath(".//span[@class='inq']/text()"))# director_actor_y_country_type需要修改new_str = director_actor_y_country_type.strip() # 去除空格y = re.match(r"([\s\S]+?)(\d+)(.*?)", new_str).group(2) # 正则表达式方式country = new_str.rsplit("/")[-2].strip()types = new_str.rsplit("/")[-1].strip()director = re.match(r"导演: ([a-zA-Z\u4e00-\u9fa5·]+)(.*?)", new_str).group(1)try:actor = re.match(r"(.*?)主演: ([a-zA-Z\u4e00-\u9fa5·]+)(.*?)", new_str).group(2)except Exception as e:actor = "no"fp.write(film_name + "#" + y + "#" + country + "#" + types + "#" + director + "#" +actor + "#" + score + "#" + quote + "\n") # 连接信息,连接符最好采用不常见的符号防止误读取print(film_name, y, country, types, director, actor, score, quote)fp.close()
import os.path
import fake_useragent
import requests
from lxml import etree
# UA伪装
head = {"User-Agent": fake_useragent.UserAgent().random#自动伪装
}
pic_name = 0
def request_pic(url):# 2、发送请求response = requests.get(url, headers=head)# 3、获取想要的数据res_text = response.text# 4、数据解析tree = etree.HTML(res_text)li_list = tree.xpath("//div[@class='slist']/ul/li")#获取所有的照片信息for li in li_list:# 1、获取照片的urlimg_url = "https://pic.netbian.com" + "".join(li.xpath("./a/img/@src"))#img/@src,代表img的src属性# 2、发送请求img_response = requests.get(img_url, headers=head)# 3、获取想要的数据img_content = img_response.contentglobal pic_namewith open(f"./picLib/{pic_name}.jpg", "wb") as fp:#命名照片名称,并写下fp.write(img_content)pic_name += 1
if __name__ == '__main__':if not os.path.exists("./picLib"):#若没有一个此文件夹,建立一个文件夹存放照片os.mkdir("./picLib")# 1、urlurl = "https://pic.netbian.com/4kdongman/"request_pic(url)for i in range(2,10):#之后照片的urlnext_url = f"https://pic.netbian.com/4kdongman/index_{i}.html"request_pic(next_url)pass
相关文章:
爬虫学习2:爬虫爬取网页的信息与图片的方法
爬虫爬取网页的信息与图片的方法 爬取人物信息 import requestshead {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 Edg/126.0.0.0" } # 这是get请求带参数的模式…...
MySQL定时备份数据,并上传到oss
1.环境准备 1.安装阿里云的ossutil 2.安装mysql 2.编写脚本 脚本内容如下 #!/bin/bash # 数据库的配置信息,根据自己的情况进行填写 db_hostlocalhost db_usernameroot db_passwordroot db_namedb_root # oss 存贮数据的bucket地址 bucket_namerbsy-backup-buck…...
极速删除 node_modules 仅3 秒()
今天教大家如何快速删除 node_modules 依赖的一个小秘诀,告别繁琐!!! 前言 作为前端开发者,相信大家都曾经历过删除 node_modules 文件夹时的漫长等待。 尤其是在处理那些依赖库繁多的项目时,删除操作…...
vue this.$refs 动态拼接
业务需要,refs是不固定的 <vxe-grid refgridWarehouse v-bind"gridWarehouseOptions" v-if"tableHeight" :height"tableHeight":expand-config"{iconOpen: vxe-icon-square-minus, iconClose: vxe-icon-square-plus}"c…...
一次搞定!中级软件设计师备考通关秘籍
大家好,我是小欧! 今天我们来聊聊软考这个话题。要是你准备参加计算机技术与软件专业技术资格(软考),那么这篇文章就是为你量身定做的。话不多说,咱们直接进入正题。 什么是软考? 软考…...
第十六讲 python中的序列-列表简介-特点-常用方法-创建-添加-删除-访问-切片-排序-复制-反转
目录 1. 序列的本质和内存结构 2.列表 2.1 列表简介 2.2 列表的特点 2.3 列表对象的常用方法大全: 2.4 列表的创建 2.4.1 使用方括号 [] 2.4.2 使用 list() 函数 2.4.3 使用 range() 函数 2.4.3.1 range的基本用法 2.4.3.2 返回值 2.4.3.3 range的使用例子 2.4.3.4 range的使…...
大模型日报 2024-07-22
大模型日报 2024-07-22 大模型资讯 谷歌将在ICML 2024展示机器学习研究成果 摘要: 谷歌研究人员将在ICML 2024会议上展示他们在机器学习领域的探索,从理论到应用,构建解决深层问题的ML系统。 代理符号学习:优化AI系统符号组件的框架 摘要: 大…...
Electron 的open-file事件
在 Electron 中,open-file 事件是一个重要的事件,它允许开发者在应用程序已经运行的情况下,通过文件打开请求(如双击文件或在命令行中使用 open 命令打开文件)来捕获文件路径。以下是对 open-file 事件的详细解析: 触发条件 应用已经打开。用户通过双击与应用程序关联的…...
前端面试 vue 接口权限控制
接口权限目前一般采用jwt的形式来验证,没有通过的话一般返回401,跳转到登录页面重新进行登录 对于 jwt的理解 (前端接口权限的控制主要通过接口权限配置和JWT(Json Web Token)技术来实现。 首先,…...
【DevOps系列】构建Devops系统
开始介绍 那就着手开始干吧。先介绍一下我们的工具链。 主要工具:GitHub、Jenkins、Kubernetes、Ansible、Prometheus和JMeter 着手动 1. 设置GitHub作为源代码仓库 登录GitHub: 打开浏览器并访问 https://github.com,使用您的GitHub账户登录。 创建…...
ABAP打印WORD的解决方案
客户要求按照固定格式输出到WORD模板中,目前OLE和DOI研究了均不太适合用于这种需求。 cl_docx_document类可以将WORD转化为XML文件,利用替换字符串方法将文档内容进行填充同 时不破坏WORD现有格式。 首先需要将WORD的单元格用各种预定义的字符进行填充,为后续替换作准备…...
emr部署hive并适配达梦数据库
作者:振鹭 一、达梦 用户、数据库初始化 1、创建hive的元数据库 create tablespace hive_meta datafile /dm8/data/DAMENG/hive_meta.dbf size 100 autoextend on next 1 maxsize 2048;2、创建数据库的用户 create user hive identified by "hive12345&quo…...
王春城:怎么用精益思维重塑企业战略规划格局?
当下,企业战略规划的灵活性和适应性变得至关重要。传统的战略规划方法往往过于僵化和静态,难以应对市场的不确定性和变化。因此,引入精益思维来重塑企业战略规划格局,成为了许多企业寻求突破和创新的途径。具体步骤如深圳天行健企…...
git reset
git reset [--soft | --mixed | --hard] [HEAD] 表格版 原始内容reset前reset命令reset后本地工作区暂存区本地仓库本地工作区暂存区本地仓库本地工作区暂存区本地仓库READMEREADMEREADMEREADMEREADMEREADME--soft HEADREADMEREADMEREADMEa.txta.txtb.txtb.txtb.txtb.txtc.tx…...
E17.【C语言】练习:sizeof和strlen的辨析
先回顾http://t.csdnimg.cn/aYHl6 1. char acX[] "abcdefg"; char acY[] { a,b,c,d,e,f,g}; 以下说法正确的是( ) A.数组acX和数组acY等价 B.数组acX和数组acY的长度相同 C.sizeof(acX)>sizeof (acY) D.strlen (acX)>strlen (acY) 分析:…...
便携气象站:科技助力气象观测
在科技飞速发展的今天,便携气象站以其轻便、高效、全面的特点,正逐渐改变着气象观测的传统模式。这款小巧而强大的设备,不仅为气象学研究和气象灾害预警提供了有力支持,更为户外活动、农业生产等领域带来了诸多便利。 便携气象站是…...
php 存储复杂的json格式查询(如:经纬度)
在开发中,有时我们可能存了一些复杂json格式不知道怎么查。我这里提供给大家参考下: 一、先上表数据格式(location字段的possiton经纬度以逗号分开的) {"title":"澳海文澜府","position":"11…...
UDP网口(1)概述
文章目录 1.计算机网络知识在互联网中的应用2.认识FPGA实现UDP网口通信3.FPGA实现UDP网口通信的方案4.FPGA实现UDP网口文章安排5.传送门 1.计算机网络知识在互联网中的应用 以在浏览器中输入淘宝网为例,介绍数据在互联网是如何传输的。我们将要发送的数据包称作A&a…...
Linux - 进程的概念、状态、僵尸进程、孤儿进程及进程优先级
进程基本概念 课本概念:在编程或软件工程的上下文中,进程通常被视为正在执行的程序的实例。当你启动一个应用程序时,操作系统会为这个程序创建一个进程。每个进程都有自己的独立内存空间,可以运行自己的指令序列,并可能…...
Gradle依赖报告:项目依赖树的X光机
Gradle依赖报告:项目依赖树的X光机 在复杂的软件项目中,依赖管理是确保应用正常构建和运行的关键。Gradle作为一个强大的构建工具,提供了依赖报告功能,帮助开发者分析和理解项目的依赖树。本文将详细介绍如何在Gradle中使用依赖报…...
开源XDR-SIEM一体化平台 Wazuh (1)基础架构
简介 Wazuh平台提供了XDR和SIEM功能,保护云、容器和服务器工作负载。这些功能包括日志数据分析、入侵和恶意软件检测、文件完整性监控、配置评估、漏洞检测以及对法规遵从性的支持。详细信息可以参考Wazuh - Open Source XDR. Open Source SIEM.官方网站 Wazuh解决…...
从零开始:构建基于深度学习的实时跌倒检测系统(UI界面+YOLO代码+数据集)
注意看文末的结局与声明 一、引言 1. 项目背景与动机 在老年人和高危职业环境中,跌倒是一种常见的事故,可能导致严重的伤害甚至致命。实时跌倒检测系统可以及时发现并报警,提供紧急救助。通过深度学习技术,可以提高跌倒检测的准…...
【策略模式在项目中的实际应用】
业务场景 最最近项目中有这样的一个业务场景: 用户下单->管理员审核->配送员接单->配送中->送达–>签收->完成 整个业务以这种流程的形式存在,每个流程状态的业务不一样,考虑到多种状态如果直接写一个接口肯定会嵌套太多…...
昇思25天学习打卡营第14天|计算机视觉
昇思25天学习打卡营第14天 文章目录 昇思25天学习打卡营第14天FCN图像语义分割语义分割模型简介网络特点数据处理数据预处理数据加载训练集可视化 网络构建网络流程 训练准备导入VGG-16部分预训练权重损失函数自定义评价指标 Metrics 模型训练模型评估模型推理总结引用 打卡记录…...
将json数组格式转成数组
start cmd [ 27 01 f7 01 24 38 02 b7 42 6e ee 2f 69 46 72 21 74 44 c4 22 7a 92 d8 6a de 66 61 b1 1e 2f de ee 5c 31 57 db df 01 31 2d c9 01 01 c0 FB ] set_ulpk {“jsonrpc”:“2.0”,“type”:2,“id”:0,“method”:“method”,“message”:{“VALUE”:[56,2,183,66…...
接口测试之测试原则、测试用例、测试流程详解
🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快 一、接口的介绍 软件测试中,常说的接口有两种:图形用户接口(GUI,人与程序的接口)、应用程序编程接口&…...
证书上的服务器名错误解决方法
方法 win r ,输入mmc 点击文件——>添加/删除管理单元 找到证书——> 添加 根据自己的存放选择存放位置 点击控制台根节点——> 受信任的根证书颁发机构——>导入 若还出现问题,则参考https://blog.csdn.net/mm120138687/article/details/…...
前端:上传2进制图片
1、let formData new FormData(); 2、添加要传的字段:formData.append("avatarfile", data); (key,value) 3、上传文件 function uploadImg() {// 1定义FormDatalet formData new FormData();// 2添加字段formData.append("…...
web前端 React 框架面试200题(三)
面试题 65. 在使用 React Router时,如何获取当前页面的路由或浏览器中地址栏中的地址? 参考回答: 在当前组件的 props中,包含 location属性对象,包含当前页面路由地址信息,在 match中存储当前路由的参数等…...
交流负载箱:电力系统的节能利器
交流负载箱是模拟电网中实际负载的装置,它能够精确地模拟各种电器设备的耗电情况,为电力系统的节能提供了重要的工具。在电力系统中,交流负载箱的应用非常广泛,它可以用于电力系统的设计、运行和维护,以及电力设备的测…...
免费二级网站/常见的搜索引擎有哪些
昨天晚上躺下刚准备睡觉,忽然听见外面吵闹的声音,仔细听又听不出来说的什么,因为说的是白话:),时而还有敲打铁门的声音,我猜想大概是某人深夜晚归,忘记带钥匙,被LP锁在门…...
企业做网站的费用怎么入账/百度免费推广有哪些方式
单个和多个checkbox选中事件怎么写 一、总结 一句话总结: 1、checkbox的事件方法的话主要是change和click 2、checkbox的属性判断的话主要是prop(判断checked和赋值checked)和attr(赋值checked)和is(判断ch…...
无锡高端网站制作/深圳关键词优化公司哪家好
为什么80%的码农都做不了架构师?>>> <p>logger的驱动程序为文件logger.c, 位于内核driver/staging/android目录.</p><p>从最后一行<code>device_initcall</code>(<code>logger_init</code>)入口, 内核在启动…...
同城购物网站建设/潍坊seo按天收费
一. 协方差分析的基本思想和应用条件协变量:影响处理效应而无法人为控制或难以控制的实验因素,称为协变量。协方差分析:协方差分析可以消除协变量对处理效应的影响,将不同处理的处理效应真正地显现出来,它是一种将直线…...
西宁做网站君博示范/凡科建站怎么样
芯片安全侧信道分析及故障注入系统集成电路是一种微型电子器件或部件,通过采用一定的工艺,将一个电路中所需的晶体管、二极管、电容、电阻、电感等元件及布线互连在一起,制作在一块半导体基片上,然后封装在一个管壳内。随着集成电…...
拖式网站建设/朋友圈推广怎么收费
查看原文:http://www.hellonet8.com/874.html这几天在运行一个php程序的时候发现老是要提示“Fatalerror:Maximumexecutiontimeof30secondsexceeded”,查了下原因原来是30秒运行超时的错误。最后的解决办法有两个。1、修改php.ini文件max_execution_time…...