我们在平时工作中需要提取各种数据以满足我们平时工作的需要,而现在网络上存在各式各样的数据,使我们获取数据的主要来源。那么我们如何快捷的获取网络数据呢,本节我们将对使用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'))的由来。
网站源码截图
本节就暂时介绍到这里,下节我们将对获取到的内容进行处理,觉得写得不错就点个赞然并关注鼓励一下,祝各位生活愉快!
联系客服