我们在平时工作中需要提取各种数据以满足我们平时工作的需要,而现在网络上存在各式各样的数据,使我们获取数据的主要来源。那么我们如何快捷的获取网络数据呢,本节我们将对使用python从网络上获取数据做简单介绍。 我们先来看看代码,然后再做分析,如下代码是从深圳住房保障局网站上获取各种住房通告,并将获取到的内容按照excel表格形式保存下来: #导入requests及其他库 import requests from bs4 import BeautifulSoup import re import csv import time #使用下面的方法能够确保正常打开网站并获取数据,不会出现http error的错误 #指定对应的user_agent和header user_agent = 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36' headers = {'User-Agent':user_agent} r = requests.get('http://zjj.sz.gov.cn/zfbzfw/',headers=headers) r.encoding='utf-8' #创建soup的对象 soup = BeautifulSoup(r.text,'lxml',from_encoding='utf8') #用正则表达式匹配所有包含内容的链接 print(soup.contents) #这里由于我们要获取的通告都含有字符串”.hml',所以我们就按照这个关键字去查找 titles = soup.find_all(href=re.compile('.htm')) rows = [] for title in titles: href = title.get('href') row = ('通知公告',title.string,href) rows.append(row) #定义csv文件头 header = ['发文部门','标题','链接'] with open('D:/ChromeCoreDownloads/test.csv','w+',encoding='gb18030') as f: f_csv = csv.writer(f) #写入文件头 f_csv.writerow(header) #写入文件内容 f_csv.writerows(rows) #这里的路径及文件要确保存在,如果不存在的话那就没法运行了 print('最新信息获取完成\n结果保存在D:/ChromeCoreDownloads/test.csv文件中') 运行上述代码,其结果如下: 运行结果 下面是得到的excel表格里面的内容: 获取到的通知公告及其网站链接 开始部分的代码基本都是类似的,这里使用的是不易报错的爬取网站内容的方式,这个方式可以直接借用,因为如果不明确指示user_agent和header就去爬取网站内容的话,很可能网站是不让你去访问的,上报类似http error的错误: 爬取网站内容的模块式开头 代码简单分析:首先我们要先明确要获取网站上的那些内容,这样才能够进一步编写代码。这里我们要获取网站上的各种通知公告的内容,所以我们可以看一下网站源代码(右键单击网站界面->选择并单击“查看源代码”既可以看到对应的内容),在源代码中我们看到了我们需要获取的内容后缀都是.hml,这个发现给我们获取对应的内容提供了方便,这就是这句代码:titles = soup.find_all(href=re.compile('.htm'))的由来。 网站源码截图 本节就暂时介绍到这里,下节我们将对获取到的内容进行处理,觉得写得不错就点个赞然并关注鼓励一下,祝各位生活愉快! |
|
来自: 我的人生宝库 > 《电脑(软件应用)》