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

功能实现

爬取所有银行的银行名称和官网地址(如果没有官网就忽略),并写入数据库;
银行链接: 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)

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

    查看浏览器UA

    获取页面信息

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.利用正则筛选所需信息

图中是获取的页面信息中所需信息中的一例
需要获取其中的 网址 和 银行名称
使用的正则表达式为‘<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)

匹配到的信息:


3.保存数据至数据库

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

连接数据库

## 连接数据库
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 urlopen

import pymysql

def 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()

查询结果

原文地址:http://blog.51cto.com/13992211/2349065

时间: 2024-08-13 08:12:08

Python练习【爬取银行网站信息】的相关文章

python爬虫--爬取某网站电影下载地址

前言:因为自己还是python世界的一名小学生,还有很多路要走,所以本文以目的为向导,达到目的即可,对于那些我自己都没弄懂的原理,不做去做过多解释,以免误人子弟,大家可以网上搜索. 友情提示:本代码用到的网址仅供交流学习使用,如有不妥,请联系删除. 背景:自己有台电脑要给老爸用,老爷子喜欢看一些大片,但是家里网络环境不好,就想批量下载一些存到电脑里.但是目前大部分的网站都是这样的, 需要一个个地点进去,才能看到下载地址 如果我要下载100部电影,那肯定手都要点断了,于是便想把这些地址给爬取出来,

Python练习【利用线程池爬取电影网站信息】

功能实现 爬取猫眼电影TOP100(http://maoyan.com/board/4?offset=90) 1). 爬取内容: 电影名称,主演, 上映时间,图片url地址保存到文件中; 2). 文件名为topMovie.csv; 3). 记录方式: 电影名称:主演:上映时间:图片url地址:评分; 4). 并爬取的信息保存在数据库中; 5). 使用多线程/线城池实现; 编程思路 1.利用多线程分配任务 2.编写单线程的任务实现功能 (1)获取指定url页面信息. (2)从指定信息中匹配所需的信

简易python爬虫 - 爬取站长论坛信息

爬取目标: 收集网站帖子里发帖人用户名,发帖人ID;帖子的ID,发帖内容;网站title 提前需要准备的python库 pip3 install requests //用于获得网站的源码 pip3 install bs4 //解析遍历网站标签 pip3 install urllib //解析网站的url 首先导入包 import requestsfrom bs4 import BeautifulSoupfrom urllib.parse import parse_qs,urlparse impo

python爬虫爬取网上药品信息并且存入数据库

我最近在学习python爬虫,然后正好碰上数据库课设,我就选了一个连锁药店的,所以就把网上的药品信息爬取了下来. 1,首先分析网页 2,我想要的是评论数比较多的,毕竟好东西大概是买的人多才好.然后你会发现它的url地址是有规律的里面的j1是指第一页,j2第二页,这样构建一个url_list. 1 url_list = 'https://www.111.com.cn/categories/953710-a0-b0-c31-d0-e0-f0-g0-h0-i0-j%s.html'#然后循环获取响应 2

python 爬虫爬取 证券之星网站

周末无聊,找点乐子... #coding:utf-8 import requests from bs4 import BeautifulSoup import random import time #抓取所需内容 user_agent = ["Mozilla/5.0 (Windows NT 10.0; WOW64)", 'Mozilla/5.0 (Windows NT 6.3; WOW64)',               'Mozilla/5.0 (Windows NT 6.1) A

Python——selenium爬取斗鱼房间信息

1 from selenium import webdriver 2 import os 3 import json 4 import time 5 6 7 class Douyu: 8 def __init__(self): 9 # 1.发送首页的请求 10 self.driver = webdriver.Chrome('../chromedriver.exe') 11 self.driver.get('https://www.douyu.com/g_yz') 12 13 # 获取页面内容 1

python爬虫抓取哈尔滨天气信息

python 爬虫 爬取哈尔滨天气信息 - http://www.weather.com.cn/weather/101050101.shtml 环境: windows7 python3.4(pip install requests:pip install BeautifulSoup4) 代码:(亲测可以正确执行) 1 # coding:utf-8 2 """ 3 总结一下,从网页上抓取内容大致分3步: 4 1.模拟浏览器访问,获取html源代码 5 2.通过正则匹配,获取指定

python爬虫实战(一)----------爬取京东商品信息

本文章的例子仅用于学习之用,如涉及版权隐私信息,请联系本人删除,谢谢. 最近一直在练习使用python爬取不同网站的信息,最终目的是实现一个分布式的网络爬虫框架,可以灵活适用不同的爬取需求. 项目github地址: https://github.com/happyAnger6/anger6Spider 在学习的过程中遇到不少问题,在这里做一下总结,并分享出来,希望有兴趣的朋友批评指正,共同学习共同进步. 本着实用至上的目的,不准备过多讲实现细节和原理,直接通过项目需求来边实战边学习,因此本系列文

Python+requests 爬取网站遇到中文乱码怎么办?

分类: Python/Ruby 最近刚开始使用python来做爬虫爬取相关数据,使用了python自带的urllib和第三方库requests,解析html使用了beautifulsoup以及lxml     这里说下lxml,lxml是python的一个html.xml解析库,lxml使用XPath能快速,简单的定位元素并获取信息.下面进入正题 1. 遇到的中文乱码问题 1.1 简单的开始     使用requests来拔取网站内容十分方便,一个最简单的代码段只需要2-3行代码就行. 点击(此