当前位置: 首页 > news >正文

Python -- 网络爬虫

Python – 网络爬虫

流程:
1. 连接链接获取页面内容(html文件);
2. 过滤获取需要信息(正则) [可能重复步骤1,2] ;
3. 存储文件到本地。

一)网络连接获取页面内容

# 网络连接获取页面内容es
import urllib.request as request # 使用网络请求类库
import urllib.error as error # 连接
import requests # 另一种网络连接方式headers = {'Connection':'keep-alive','Accept-Language':'zh-CN,zh;q=0.9','Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8','User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36',
}# 简单直接访问网页 (某些网页可能被拒绝访问)
def getHtml(url):try:req = request.Request(url) # 获取请求webpage = request.urlopen(req) # 打开页面方法1# webpage = request.urlopen(url) # 打开页面方法2html = webpage.read() # 读取页面内容return htmlexcept error.URLError as e:print(str(e.code) + '\t' + e.reason)return Nonedef getXMLText(url):try:response = requests.get(url) # headers = headersresponse.raise_for_status()response.encoding = "utf-8"return response.textexcept:return None# 配置访问请求
def getHtmlWithHead(url):req = request.Request(url, headers)  # 发送请求同时传data表单webpage = request.urlopen(req) html = webpage.read() # 读取页面内容return html#====================================================
def main():url = input('输入网址: ')print(getHtml(url))print(getXMLText(url))#----------------------------------------------------------------
if __name__ == '__main__':main()
python用于爬虫的库: urllib, requestsurllib.request 用于打开和读取URL, (request.urlopen)
urllib.error 用于处理前面request引起的异常, (:403	Forbidden)
urllib.parse 用于解析URL,urlopen(url, data=None, timeout=<object object at 0x000001D4652FE140>, *, cafile=None, capath=None, cadefault=False, context=None)。

二)过滤、筛选、替换

1. from bs4 import BeautifulSoup as bs: # 使用文档解析类库, 整理HTML文件,方便处理
soup = bs(html, 'html.parser') # 'lxml'# 返回为数组
info = soup.find_all('div', attrs={'class' : 'add'})# 获取所有标签为'div', 属性为class,属性值为'add'的数据: <div class="add">当前位置:xxxx</div>
info = soup.select('p') # 获取所有标签为'a'(链接)的数据:<a href="https://www.xxx.com/">xxx</a>
2. import re # 正则# 返回为数组
title = re.compile(r'<h2>(.*?)</h2>').search(str(info))# 在info字符串内获取所有被<h2>和</h2>包围的字段
3. str 字符操作
author = str(info).replace('<p>','').replace('</p>','').rstrip() # lstrip()

三)本地存储

import os # 含文件读写
import time # time.sleep(0.1)dir = 'D:\\Python\\Data\\'
path = 'D:\\Python\\Data\\text.txt'
1. create dir
isExists = os.path.exists(dir)if not isExists:os.mkdir(path)2. write: 'w','wb'
file = open(path,'w',encoding='utf-8') # 以'utf-8'编码方式向path路径指向的文件内写入(不存在会自动创建)
file.write('content')
file.close() # 写完后记得关闭3. read: 'r','rb'
file = open(path, 'rb')

相关文章:

Python -- 网络爬虫

Python – 网络爬虫 流程&#xff1a; 1. 连接链接获取页面内容&#xff08;html文件&#xff09;&#xff1b; 2. 过滤获取需要信息&#xff08;正则&#xff09; [可能重复步骤1&#xff0c;2] &#xff1b; 3. 存储文件到本地。一&#xff09;网络连接获取页面内容 # 网络…...

【英特尔IA-32架构软件开发者开发手册第3卷:系统编程指南】2001年版翻译,2-5

文件下载与邀请翻译者 学习英特尔开发手册&#xff0c;最好手里这个手册文件。原版是PDF文件。点击下方链接了解下载方法。 讲解下载英特尔开发手册的文章 翻译英特尔开发手册&#xff0c;会是一件耗时费力的工作。如果有愿意和我一起来做这件事的&#xff0c;那么&#xff…...

设计模式4 适配器 (adapter)

一句话&#xff0c;适配器按照客户的需求, 适配当前已有的接口。 目标接口&#xff1a;reqeust() public interface Target {void request(); //this is client needed interface }已有接口&#xff1a;specificRequest package com.example.adapter;import android.uti…...

《分布式机器学习模式》:解锁分布式ML的实战宝典

在大数据和人工智能时代&#xff0c;机器学习已经成为推动技术进步的重要引擎。然而&#xff0c;随着数据量的爆炸性增长和模型复杂度的提升&#xff0c;单机环境下的机器学习已经难以满足实际需求。因此&#xff0c;将机器学习应用迁移到分布式系统上&#xff0c;成为了一个不…...

【项目实战】HuggingFace初步实战,使用HF做一些小型任务

Huggingface初步实战 一、前期准备工作二、学习pipline2.1.试运行代码&#xff0c;使用HuggingFace下载模型2.2. 例子1&#xff0c;情感检测分析(只有积极和消极两个状态)2.3. 例子2&#xff0c;文本生成 三、学会使用Tokenizer & Model3.1.tokenizer&#xff08;分词器&am…...

堆的应用——堆排序和TOP-K问题

1.堆排序 想法⼀&#xff1a; 基于已有数组建堆、取堆顶元素完成排序。也就是利用写好的堆数据结构&#xff08;之前的文章有讲解&#xff09;&#xff0c;去实现排序。 void HeapSort(int* a, int n){HP hp;for(int i 0; i < n; i){HPPush(&hp,a[i]);}int i 0;whi…...

探秘 MySQL 数据类型的艺术:性能与存储的精妙平衡

文章目录 前言&#x1f380;一、数据类型分类&#x1f380;二、整数类型&#xff08;举例 TINYINT 和 INT &#xff09;&#x1f3ab;2.1 TINYINT 和 INT 类型的定义2.1.1 TINYINT2.1.2 INT &#x1f3ab;2.2 表的操作示例2.2.1 创建包含 TINYINT 和 INT 类型的表2.2.2 插入数据…...

使用任意绘图软件自学并结合上课所学内容完成数据库原理图绘制

本次绘图采用亿图图示软件...

static、 静态导入、成员变量的初始化、单例模式、final 常量(Content)、嵌套类、局部类、抽象类、接口、Lambda、方法引用

static static 常用来修饰类的成员&#xff1a;成员变量、方法、嵌套类 成员变量 被static修饰&#xff1a;类变量、成员变量、静态字段 在程序中只占用一段固定的内存&#xff08;存储在方法区&#xff09;&#xff0c;所有对象共享可以通过实例、类访问 (一般用类名访问和修…...

基于SSM的智能养生平台管理系统源码带本地搭建教程

技术栈与架构 技术框架&#xff1a;采用SSM&#xff08;Spring Spring MVC MyBatis&#xff09;作为后端开发框架&#xff0c;结合前端技术栈layui、JSP、Bootstrap与jQuery&#xff0c;以及数据库MySQL 5.7&#xff0c;共同构建项目。 运行环境&#xff1a;项目在JDK 8环境…...

Latex中文排版字体和字号

中文排版 最近常用latex排版&#xff0c;也遇到了很多问题。这里对于主要的参考文章做一个总结和推荐。 一份不太简短的 LaTeX2ε 介绍【中文资料】ctex宏包用户手册&#xff0c;用户手册使用 命令行texdoc ctex 这两个文档都是中文的&#xff0c;而且几乎解决了我90%的排版…...

[C++ 11] 列表初始化:轻量级对象initializer_list

C发展历史 C11是C语言的第二个主要版本&#xff0c;也是自C98以来最重要的一次更新。它引入了大量的新特性&#xff0c;标准化了已有的实践&#xff0c;并极大地改进了C程序员可用的抽象能力。在2011年8月12日被ISO正式采纳之前&#xff0c;人们一直使用“C0x”这个名称&#…...

【NodeJS】NodeJS+mongoDB在线版开发简单RestfulAPI (八):API说明(暂时完结,后续考虑将在线版mongoDB变为本地版)

本项目旨在学习如何快速使用 nodejs 开发后端api&#xff0c;并为以后开展其他项目的开启提供简易的后端模版。&#xff08;非后端工程师&#xff09; 由于文档是代码写完之后&#xff0c;为了记录项目中需要注意的技术点&#xff0c;因此文档的叙述方式并非开发顺序&#xff0…...

manictime整合两个数据库的数据

作用 老电脑崩溃了,有个1t.db&#xff0c; 新电脑有个3t.db 那么重装系统后就想整合起来用。 整合前文件大小 整合命令 .\mtdb.exe importtimelines -sdbpa ManicTimeCore-1t.db -dbpa ManicTimeCore-3t.db -tt ManicTime/ComputerUsage,ManicTime/Applications,ManicTime…...

Spring Boot植物健康系统:智慧农业的新趋势

6系统测试 6.1概念和意义 测试的定义&#xff1a;程序测试是为了发现错误而执行程序的过程。测试(Testing)的任务与目的可以描述为&#xff1a; 目的&#xff1a;发现程序的错误&#xff1b; 任务&#xff1a;通过在计算机上执行程序&#xff0c;暴露程序中潜在的错误。 另一个…...

(三)第一个Qt程序“Qt版本的HelloWorld”

一、随记 我们在学习编程语言的时候&#xff0c;各种讲解编程语言的书籍中通常都会以一个非常经典的“HelloWorld”程序展开详细讲解。程序虽然简短&#xff0c;但是“麻雀虽小&#xff0c;五脏俱全”&#xff0c;但是却非常适合用来熟悉程序结构、规范&#xff0c;快速形成对编…...

【Python知识】一个强大的数据分析库Pandas

文章目录 Pandas概述1. 安装 Pandas2. 基本数据结构3. 数据导入和导出4. 数据清洗5. 数据选择和过滤6. 数据聚合和摘要7. 数据合并和连接8. 数据透视表9. 时间序列分析10. 数据可视化 &#x1f4c8; 如何使用 Pandas 进行复杂的数据分析&#xff1f;1. 数据预处理2. 处理缺失值…...

10.26学习

1.整形的定义和输出 在C语言中&#xff0c;整形&#xff08;Integer&#xff09;是一种基本数据类型&#xff0c;用于存储整数。整形变量可以是正数、负数或零。在定义和输出整形变量时&#xff0c;需要注意以下几点&#xff1a; ①定义整形变量&#xff1a; 使用 int 关键字…...

CSS易漏知识

复杂选择器可以通过&#xff08;id的个数&#xff0c;class的个数&#xff0c;标签的个数&#xff09;的形式&#xff0c;计算权重。 如果我们需要将某个选择器的某条属性提升权重&#xff0c;可以在属性后面写!important&#xff1b;注意!importent要写在;前面 很多公司不允许…...

【10天速通Navigation2】(三) :Cartographer建图算法配置:从仿真到实车,从原理到实现

前言 往期内容&#xff1a; 第一期&#xff1a;【10天速通Navigation2】(一) 框架总览和概念解释第二期&#xff1a;【10天速通Navigation2】(二) &#xff1a;ROS2gazebo阿克曼小车模型搭建-gazebo_ackermann_drive等插件的配置和说明 本教材将贯穿nav2的全部内容&#xff0c…...

测试造数,excel转insert语句

目录 excel转sql的insert语句一、背景二、直接上代码 excel转sql的insert语句 一、背景 在实际测试工作中&#xff0c;需要频繁地进行测试造数并插入数据库验证&#xff0c;常规的手写sql语句过于浪费时间&#xff0c;为此简单写个脚本&#xff0c;通过excel来造数&#xff0…...

Python 应用可观测重磅上线:解决 LLM 应用落地的“最后一公里”问题

作者&#xff1a;彦鸿 背景 随着 LLM&#xff08;大语言模型&#xff09;技术的不断成熟和应用场景的不断拓展&#xff0c;越来越多的企业开始将 LLM 技术纳入自己的产品和服务中。LLM 在自然语言处理方面表现出令人印象深刻的能力。然而&#xff0c;其内部机制仍然不明确&am…...

从零开始:用Spring Boot搭建厨艺分享网站

2 相关技术 2.1 Spring Boot框架简介 Spring Boot是由Pivotal团队提供的全新框架&#xff0c;其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置&#xff0c;从而使开发人员不再需要定义样板化的配置。通过这种方式&#xff0c;Sprin…...

《2024中国泛娱乐出海洞察报告》解析,垂直且多元化方向发展!

随着以“社交”为代表的全球泛娱乐市场规模不断扩大以及用户需求不断细化&#xff0c;中国泛娱乐出海产品正朝着更加垂直化、多元化的方向发展。基于此&#xff0c;《2024中国泛娱乐出海洞察报告》深入剖析了中国泛娱乐行业出海进程以及各细分赛道出海现状及核心特征。针对中国…...

强化学习数学原理学习(一)

前言 总之开始学! 正文 先从一些concept开始吧,有一个脉络比较好 state 首先是就是状态和状态空间,显而易见,不多说了 action 同理,动作和动作空间 state transition 状态转换,不多说 policy 策略,不多说 reward 奖励,不多说 MDP(马尔科夫) 这里需要注意到就是这个是无…...

获 Sei 基金会投资的 MetaArena :掀起新一轮链上游戏革命

MetaArena 是一个综合性的 Web3 游戏开发和发布平台&#xff0c;集成了最先进的技术架构&#xff0c;包括 Unreal Engine 5.3、去中心化虚拟资产交易市场和分布式计算资源支持。平台不仅为开发者提供了高效的开发工具&#xff0c;还通过跨链功能和 AI 模块&#xff0c;极大简化…...

react-signature-canvas 实现画笔与橡皮擦功能

react-signature-canvas git 地址 代码示例 import React, { Component } from react import { createRoot } from react-dom/clientimport SignaturePad from ../../src/index.tsximport * as styles from ./styles.module.cssclass App extends Component {state { trimmed…...

004:ABBYY PDF Transformer安装教程

引言&#xff1a;本文主要讲解。 一、软件介绍 ABBYY PDF Transformer由ABBYY公司出品&#xff0c;属于一款家庭及商业都适用的PDF文档转换工具。它结合了ABBYY的OCR&#xff08;光学字符识别&#xff09;技术和Adobe PDF库技术&#xff0c;以确保能够便捷地处理任何类型的PDF…...

FlinkSQL之temporary join开发

在实时开发中&#xff0c;双流join获取目标对应时刻的属性时&#xff0c;经常使用temporary join。笔者在流量升级的实时迭代中&#xff0c;需要让流量日志精准的匹配上浏览时间里对应的商品属性&#xff0c;使用temporary join开发过程中踩坑不少&#xff0c;将一些经验沉淀在…...

第二十六节 直方图均衡化

图像直方图均衡化 图像直方图均衡化可以增强图像增强&#xff0c;对输入图像进行直方图均衡化处理&#xff0c;提升后续对象检测的准确率在Opencv人脸检测的代码演示中已经很常见了&#xff0c;此外对医学影像图像与卫星遥感图像也经常通过直方图均衡化来提升图像质量 Opencv…...

如何查看网站点击量/查询网站流量的网址

1.触发器 这是一个非常简单直接的解决方案&#xff0c;我们只需要将DTS引擎驻留在比如windows服务中&#xff0c;该引擎通过数据库的触发器事件获取源表数据更新的所有情况&#xff0c;即增量&#xff0c;然后相应的更新目的表。然而&#xff0c;由谁来创建触发器了&#xf…...

wordpress定时发布文章0点/怎么免费建个人网站

一、启动项目&#xff1a; 1 django-admin start mysite1 2 cd mysite1 3 python manage.py startapp loginapp 根据上文敲命令就可以创建好了一个项目结构&#xff0c;之后就是修改配置文件&#xff0c;这里使用的数据库是MySQL的。 二、修改配置文件&#xff1a; settings.py…...

做的新网站能用多久/北京seo推广系统

我们接着上次的内容讲解,首先这次把smarty定界符改了:$tpl->left_delimiter "<!--{";//左定界符 $tpl->right_delimiter "}-->";//右定界符2.变量下面是通过php赋值(assign)方式分配值: 1.)简单变量通过$smarty->assign(name,xcf007);分…...

寻花问柳专注做一家男人最爱的网站/长沙seo霸屏

2019独角兽企业重金招聘Python工程师标准>>> 以前看Parity源代码的时候&#xff0c;一直用GDB调试跟踪。幸亏以前有Unix/Linux编程的底子&#xff0c;否则用GDB想死的心都有。最近发现Microsoft的VS Code&#xff0c;非常不错。把过程记下来&#xff0c;备查 首先下…...

网站关键字优化地点/百度广告推广电话

从选择Java GPL许可方式开源&#xff0c;到扩展X86产品线&#xff0c;到现在的股票代码由“SUNW”改变为“JAVA”&#xff0c;施瓦兹正在向我们展现一个全新的、灵活的而不是食古不化的Sun。IT 需要的是创新、创新、再创新&#xff0c;任何固执己见的家伙注定要被淘汰。在大家都…...

外贸商城网站制作/哈尔滨百度网络推广

定义头部文件&#xff0c;防止写中文时乱码 header("content-type:text/html;charsetutf-8");接收数据$username $_POST["uname"];$userpwd $_POST["upwd"];处理数据:将接收到的用户名和密码 添加到数据库的user表中1--连接数据源 mysql_con…...