Python练习【爬取银行网站信息】

news/2024/5/17 2:12:56/文章来源:https://blog.csdn.net/weixin_34408624/article/details/92247553

功能实现

爬取所有银行的银行名称和官网地址(如果没有官网就忽略),并写入数据库;
银行链接: http://www.cbrc.gov.cn/chinese/jrjg/index.html

编程思路

1.利用url访问页面并获取页面信息
2.利用正则表达式对页面信息进行筛选,获取我们需要的信息
3.保存至Mysql数据库中

1.获取网页信息并保存至文件

from urllib.request import urlopen# 获取页面信息
def getPageInfo(url):pageInfo = urlopen(url)content = pageInfo.read().decode('utf-8')return content# 主函数
def main():url = 'http://www.cbrc.gov.cn/chinese/jrjg/index.html'pageInfo = getPageInfo(url)print(pageInfo)

Python练习【爬取银行网站信息】

  • 一些网站常常通过判断 UA(User-Agent用户代理) 来给不同的操作系统、不同的浏览器发送不同的页面,因此可能造成某些页面无法在某个浏览器中正常显示,但通过伪装 UA 可以绕过检测。

    查看浏览器UA

    Python练习【爬取银行网站信息】

    获取页面信息

def main():url = 'http://www.cbrc.gov.cn/chinese/jrjg/index.html'#修改UA,伪装成浏览器,以获取相应页面user_agent = "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko Core/1.63.6788.400 QQBrowser/10.3.2864.400"reqObj = request.Request(url, headers={'User-Agent': user_agent})pageInfo = getPageInfo(reqObj)print(pageInfo)

保存到文件方便查看

# 保存到文件pageContent
def saveInfo(data):with open('doc/pageContent','w+',encoding='utf-8') as f:f.write(data)

2.利用正则筛选所需信息

Python练习【爬取银行网站信息】

图中是获取的页面信息中所需信息中的一例
需要获取其中的 网址 和 银行名称
使用的正则表达式为'<a href="(http.*?)".*?>\s+(.+?)\s+?</a>'
这里注意利用\s+匹配额外的\t和\n
# 利用正则匹配获取信息
def getInfo(data):pattern = r'<a href="(http.*?)".*?>\s+(.+?)\s+?</a>'info = re.findall(pattern ,data)print(info)

匹配到的信息:

Python练习【爬取银行网站信息】


3.保存数据至数据库

首先在mysql中创建一个名为bankUrl的数据库

Python练习【爬取银行网站信息】

连接数据库

## 连接数据库
conn = pymysql.connect(host='localhost', # 主机名user='root', # 用户名password='mysql',  # 密码database='bankUrl', # 连接对应数据库charset='utf8', # utf-8编码autocommit=True # 自动提交数据)cur = conn.cursor() # 创建游标# 删除重建表格来刷新每次写入的数据cur.execute('drop table bankurl') creatTableSql = 'create table if not exists bankUrl(银行名称 varchar(20),网址 varchar(100))default charset=utf8;'cur.execute(creatTableSql)# 写入数据库for item in getInfo(pageInfo):insertSql = 'insert into bankUrl(银行名称,网址) value("{1}","{0}")'.format(item[0],item[1])cur.execute(insertSql)

完整代码:

import re
import time
from urllib import request
from urllib.request import urlopenimport pymysqldef timeCounter(fun):def wrapper(*arg ,**kwargs):startTime = time.time()fun(*arg,**kwargs)endTime = time.time()print(fun.__name__+'运行时间为%.2f'%(startTime-endTime))return wrapper# 获取页面信息
def getPageInfo(url):pageInfo = urlopen(url)content = pageInfo.read().decode('utf-8')return content# 保存页面信息到文件
def saveInfo(data):with open('doc/pageContent','w+',encoding='utf-8') as f:f.write(data)# 利用正则匹配获取信息
def getInfo(data):pattern = r'<a href="(http.*?)".*?>\s+(.+?)\s+?</a>'info = re.findall(pattern ,data)return info@timeCounter
def main():url = 'http://www.cbrc.gov.cn/chinese/jrjg/index.html'user_agent = "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko Core/1.63.6788.400 QQBrowser/10.3.2864.400"reqObj = request.Request(url, headers={'User-Agent': user_agent})pageInfo = getPageInfo(reqObj)# saveInfo(pageInfo)conn = pymysql.connect(host='localhost',user='root',password='mysql',database='bankUrl',charset='utf8',autocommit=True,    # 如果插入数据,, 是否自动提交? 和conn.commit()功能一致。)cur = conn.cursor()# cur.execute('create database if not exists bankUrl;')cur.execute('drop table bankurl')creatTableSql = 'create table if not exists bankUrl(银行名称 varchar(20),网址 varchar(100))default charset=utf8;'cur.execute(creatTableSql)for item in getInfo(pageInfo):insertSql = 'insert into bankUrl(银行名称,网址) value("{1}","{0}")'.format(item[0],item[1])cur.execute(insertSql)if __name__ == '__main__':main()

查询结果

Python练习【爬取银行网站信息】

转载于:https://blog.51cto.com/13992211/2349065

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

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

相关文章

基于Django+Bootstrap框架,设计微型小说网站

一、项目背景&#xff1a; 为了回顾关于django的文件上传和分页功能&#xff0c;打算写一个微型的小说网站练练手。花了一个下午的时间&#xff0c;写了个小项目&#xff0c;发现其中其实遇到了许多问题&#xff0c;不过大部分通过debug之后就解决了&#xff0c;其他部分通过阅…

网站跨站点单点登录

昨天和几位朋友探讨到了这个话题&#xff0c;发现虽然单点登录&#xff0c;或者叫做独立的passport登录虽然已经有了很多实现方法&#xff0c;但是能真正了解并实现的人却并不太多&#xff0c;所以些下此文&#xff0c;希望从原理到实现&#xff0c;能让大家了解的多一些 至于什…

利用HTML5/CSS3写一个网站布局

页面视图&#xff1a; 代码查看&#xff1a; https://github.com/YanHSana/ResponsiveWesite

大型网站技术架构(三)架构核心要素

2019独角兽企业重金招聘Python工程师标准>>> 所谓架构&#xff0c;一种通俗的说法就是“最高层次的规划&#xff0c;难以改变的决定”&#xff0c;这些规划和决定奠定了事物未来发展的方向和最终的蓝图。 而软件架构即“有关软件整体结构与组件的抽象描述&#xff0…

浅谈大型网站动态应用系统架构

转自&#xff1a;http://news.cnblogs.com/n/70241/ 动态应用&#xff0c;是相对于网站静态内容而言&#xff0c;是指以c/c、php、Java、perl、.net等服务器端语言开发的网络应用软件&#xff0c;比如论坛、网络相册、交友、BLOG等常见应用。动态应用系统通常与数据库系统、缓存…

网站推荐:Google音乐搜索引擎

Lander之前在网路上在线听或下载MP3都是通过百度的MP3搜索&#xff0c;不知道大家日常都用什么来着。使用百度音乐搜索常被一些问题困扰&#xff0c;如下载比较麻烦&#xff0c;下载的音乐质量无法保证&#xff08;其实在国内&#xff0c;几乎绝大部分网站提供的MP3都是盗版的&…

打包Asp.Net 网站成为一个exe 方便快捷的进行客户演示

在Asp时代有一个NetBox 产品可以把整个Asp网站AllInOne的打包成一个exe&#xff0c;在没有IIS的情况下可以单独运行这个exe来开启整个网站。在Asp.Net 下一直没有类似的产品出现&#xff0c;可能是IIS已经非常的强大了&#xff0c;不需要类似的产品了? 但是在某种场景下还是需…

网站日志返回304状态码

之前在seo中心里面听老师讲过一个seo者是需要去分析网站日志的。而如果你的网站还没有网站日志这个功能的话&#xff0c;那么我建议你可以去换一个空间了。因为做seo就需要有网站日志。 在哪里查网站日志呢&#xff1f;以西北互联的香港空间举例。登陆后台之后会有一个叫网站日…

在线评论html,在线评论与SEO——评论内容的重要性

所有人都知道搜索引擎喜欢高质量的原创内容&#xff0c;那么到底什么算原创、如何产出原创内容、哪些原创内容属于高质量——一直是站长们纠结的问题。最近有人向小编推荐了一篇文章&#xff0c;作者用BrightLocal产出的消息者报告数据作为依据&#xff0c;表现了在线评论内容在…

(一)新手搭建、备份、还原Sharepoint门户网站之--新建篇

1. 企业门户安装 1.1 安装前期准备 安装前先准备好以下安装程序&#xff1a;Windows Server 2003(或以上)、SQL Server 2005、.NET Framework 3.0、Office SharePoint Server 2007。 1.2 安装必要的Windows组件 首先安装好一台Windows Server 2003的服务器&#xff0c;并安装几…

学用MVC4做网站一:修改密码1.4

一、用户 1.1用户注册 1.2用户登录 1.3修改密码 1.4修改资料 在用户登陆成功后要跳转到一个页面&#xff0c;暂且叫做用户中心吧。在【UserController】添加[default] action [UserAuthorize]public ActionResult Default(){userRsy new UserRepository();var _user userRsy.…

关于大型网站技术演进的思考系列博客

2019独角兽企业重金招聘Python工程师标准>>> 出处:夏天的森林博客 关于大型网站技术演进的思考&#xff08;一&#xff09;--存储的瓶颈&#xff08;1&#xff09;关于大型网站技术演进的思考&#xff08;二&#xff09;--存储的瓶颈&#xff08;2&#xff09;关于大…

阿里云搭建自己的网站

1、下载xampp、wordpress复制到自己的服务器安装

构建httpd网站服务器(二) -- httpd服务的访问控制和基于域名、IP、端口的虚拟主机...

httpd服务访问控制概述httpd服务的访问控制作用&#xff1a;控制对网站资源的访问为特定的网站目录添加访问授权常用访问控制方式&#xff1a;客户机地址限制用户授权限制Order配置项&#xff0c;定义控制顺序先允许后拒绝&#xff0c;默认拒绝所有&#xff1a;Order allow,den…

怎样提高用户访问,提高网站页面深度浏览?

想必&#xff0c;很多的网站优化者&#xff0c;都遇到过类似的情况。访客进入到首页&#xff0c;不会进行二次的点击&#xff0c;而选择的是跳出页面。不能深度性的浏览&#xff0c;Spider会记录下。这样的现象&#xff0c;对于网站权重上的提升是负面影响的。因此。如何设计好…

使用Fail2ban来防御你的服务器和网站攻略

Fail2ban可以通过你的日志log匹配规则进而实现你想要的功能&#xff0c;比如禁止掉那些破解你密码的人。下面就讲一下在LINUX上Fail2ban的安装吧首先第一步确定你的系统进而安装&#xff1a;Centos复制代码$ sudo yum install fail2banFedora复制代码$ sudo yum install fail2b…

打造基于hadoop的网站日志分析系统:(2)Hadoop的编译

2019独角兽企业重金招聘Python工程师标准>>> 环境&#xff1a;ubuntu14.04 64位 前提&#xff0c;系统已经安装了jdk并且环境变量配置完成。 1.下载hadoop源码 wget http://mirror.esocc.com/apache/hadoop/common/hadoop-2.4.0/hadoop-2.4.0-src.tar.gz&#xff0c…

在线反汇编代码网站

https://godbolt.org/ 下面是一个在线运行汇编代码的网站 https://www.tutorialspoint.com/compile_assembly_online.php

很多人很想知道怎么扫一扫二维码就能打开网站,就能添加联系人,就能链接wifi,今天做个demo(续集)...

有些功能部分手机不能使用&#xff0c;网站&#xff0c;通讯录&#xff0c;wifi基本上每个手机都可以使用。&#xff08;浏览器自带的扫描就够了&#xff0c;QQ扫码和微信扫码部分手机不能直接连接wifi&#xff09; 在看之前你可以扫一扫下面几个二维码先看看效果&#xff1a; …

php 网站 文件寻址,如果访问存储器时使用bp寻址,则默认的段寄存器是什么?...

如果访问存储器时使用bp寻址&#xff0c;则默认的段寄存器是“SS”&#xff0c;即堆栈段。SS堆栈段通常是指采用堆栈方式工作的一段内存区域&#xff1b;在采用段式内存管理方式进行程序内存分配的架构中&#xff0c;堆栈段用来存放局部变量和函数返回地址。段寄存器是因为对内…