分享

第1集 如何使用python网上抓取数据

 我的人生宝库 2019-12-18

我们在平时工作中需要提取各种数据以满足我们平时工作的需要,而现在网络上存在各式各样的数据,使我们获取数据的主要来源。那么我们如何快捷的获取网络数据呢,本节我们将对使用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文件中')

运行上述代码,其结果如下

第1集 如何使用python网上抓取数据

运行结果

下面是得到的excel表格里面的内容:

第1集 如何使用python网上抓取数据

获取到的通知公告及其网站链接

开始部分的代码基本都是类似的,这里使用的是不易报错的爬取网站内容的方式,这个方式可以直接借用,因为如果不明确指示user_agent和header就去爬取网站内容的话,很可能网站是不让你去访问的,上报类似http error的错误:

第1集 如何使用python网上抓取数据

爬取网站内容的模块式开头

代码简单分析:首先我们要先明确要获取网站上的那些内容,这样才能够进一步编写代码。这里我们要获取网站上的各种通知公告的内容,所以我们可以看一下网站源代码(右键单击网站界面->选择并单击“查看源代码”既可以看到对应的内容),在源代码中我们看到了我们需要获取的内容后缀都是.hml,这个发现给我们获取对应的内容提供了方便,这就是这句代码:titles = soup.find_all(href=re.compile('.htm'))的由来。

第1集 如何使用python网上抓取数据

网站源码截图

本节就暂时介绍到这里,下节我们将对获取到的内容进行处理,觉得写得不错就点个赞然并关注鼓励一下,祝各位生活愉快!

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多