利用python获取网页信息以及插入Access数据库

时间:2022-03-13 02:09:32


         最近在利用爬虫获取智联招聘的职位信息,尝试使用C#,发现很难进行。逛遍论坛就几个老例子,十分被动。于是就使用python代替进行数据获取。Python操作Access数据库是在实践过程中遇到的最大的难题。国内论坛上要么不详细要么就太老了,都没连上。故在此分享我的经验,给像我一样的小白菜提供思路。

         本文主要内容有:

1、  Python获取网页代码

2、  Python使用xpath解析需要的内容

3、  Python使用正则表达式解析需要的内容

4、  Python的Access数据库的连接和插入数据

本文所用模块以及工具下载链接:http://pan.baidu.com/s/1slrrkpn密码:9isr

Python是一门易学的语言,拥有很多模块,可以快速实现特定的功能。此次我获取网页数据使用的是urllib的模块。只需要两行代码就可以实现网页源码的获取。

e.g

利用python获取网页信息以及插入Access数据库

执行这段代码,就能把百度主页源码保存到html里面了。

 

XPath是一个很强大的东西,可以用来匹配xml文档里面的的任何元素节点。相比于正则表达式,结构更清晰,语法也简单很多。在Python里面使用Xpath需要使用xml模块里面的etree类。这个可以从官网下载(https://pypi.python.org/pypi/lxml/3.4.2),可以找最新版本下载。XPath的语法很简单,可以从w3school学习。

掌握了这些匹配节点的方法,网页的大部分内容都能被匹配到了。

此次我主要是获取智联招聘上的职位等信息。首先需要到浏览器查看网页源码

利用python获取网页信息以及插入Access数据库

需要的信息,都在这几个<td>标签里面。

要匹配工作职位信息,需要匹配到<tdclass=”zwmc”>标签下的文本,查找了全部文档发现class属性是唯一的,于是我们可以使用XPath语法这样进行匹配:

                            //td[@class="zwmc"]/div/a[1]/text()

先使用//进行全文匹配,定位到带有class属性为zwmc的<td>标签,然后定位到<td>标签下的<div>标签,最后定位到<a>标签,由于可能某些地方有很多<a>标签,所以选择第一个。最后获取text属性就完成网页信息的提取了。其他信息类似的匹配。最后完成匹配的代码可以这样写:

利用python获取网页信息以及插入Access数据库

用title,cmName,money,position分别储存解析到的信息。由于是整个网页的解析,所以这几个变量是列表list。

最后,整个解析信息的方法,可以写成:

利用python获取网页信息以及插入Access数据库

html就是我们获取的网页源码,通过etree.HTML()方法,转换成xml,在通过xpath()方法进行解析。

使用list的append方法,将这四个list全部连接起来,方便插入数据库。

append方法很神奇,他将几个单列的list合并成一个多列的list。

 

         同样的,如果使用正则表达式也是可以实现信息的提取,需要使用re模块。关于正则表达式就不在做过多赘述,代码如下:

 利用python获取网页信息以及插入Access数据库

Python连接MySQL那是相当容易,网上例子也很多,连接必定是没问题的。所以也不再赘述。现在主要讲一讲怎么连接Access。

首先,我们需要安装Microsoftoffice AccessDatabaseEngine。推荐2007版本。百度云链接已提供下载。我们用Access新建了一个数据库之后,我们可以利用visual studio尝试连接:

菜单栏:工具>连接到数据库>MicrosoftAccess数据库文件>浏览(选择新建的数据库文件)>测试连接

如果成功,会收到以下提示:

如果失败,就要检查Microsoftoffice AccessDatabaseEngine是否安装成功了。

利用python获取网页信息以及插入Access数据库

 测试连接成功之后,先别急着关闭visualstudio,此时选择 高级,在下面会有一个字符串,它就是连接数据库的语句。

利用python获取网页信息以及插入Access数据库

连接Access数据库需要使用win32com模块,所以需要安装pywin32。这个可以从sourceforge下载(https://sourceforge.net/projects/pywin32/files/pywin32/)对应的python版本,是一个独立的exe安装文件。连接部分代码如下:

利用python获取网页信息以及插入Access数据库利用python获取网页信息以及插入Access数据库

需要改动的地方就是ConnectionString,rs_name,Item()里面的值。关于Access数据库语法百度能搜索得到很多。数据库参考部分来自:

http://www.cnblogs.com/z964166725/p/4807412.html

成功平台:win7 x64,office2010 x64;win8 x64 ,office 2010 x64;win10 x64,office2016 x64

关于乱码问题:python容易出现的就是乱码问题,所以在代码开头可以强制输出编码为utf8,添加以下代码:

利用python获取网页信息以及插入Access数据库

整个完整爬虫代码如下:

利用python获取网页信息以及插入Access数据库利用python获取网页信息以及插入Access数据库