利用Python语言爬取农产品网站的技术研究
作者:徐东升 张昊辰
来源:《环球市场信息导报》2018年第21
        一、刖吾
        我国政府非常重视农业的信息化建设,农业信息化已有30多年的历史,特别是近几年,基于物联网技术、传感器、移动通信、云计算等技术为基础的智慧农业的发展,农业的信息化建设已经融入到农业产业的各个领域。
        随着农业信息量的加大,如何利用数据爬取的方法,帮助农业信息需求者从已存在的海量数据中快速定位自身需求的信息,从而使需求与信息匹配,最大程度的发挥农业信息对农业经济的支撑和引导作用是一个研究点。
        二、技术研究
        从海量的数据中爬取需要的数据并入库是本研究的重点,以从农业信息网( t)获取苹果信息为例进行接下来的研究。从农业信息需要者的视角登录
并访问该网站,打开任意1苹果的农业信息,需要从首页开始依次点击水果>“苹果,并点击大图列表才能进入具体的页面。这个过程是非常繁琐和低效的。对有信息需求者而言,最关注的的就是三个信息,即联系人,和地址,可以看到对应网站上的条目分别是联系人手机号码所在地区。加上要查信息的条件,即产品品种,相当于对于任何来自于该网站的信息,最关键的只需要首先获取者以上4条信息即可。
        接下来利用python编写一段程序,将该网站下的基于以上4个关键字段进行网页爬取。部分代码如下:
        urltimeout=30
        ding= 'utf-8'
        printresp.status_code
        products= re.findallr'pic_divxinxi_ title.+python正则表达式爬虫 re.l
        # printproducts
        for j in range0 lenproducts》:
        producturl=re.findallr'http.+?\ aspx‘ products[j] re.l
        purl= producturl[0]
        printpurl
        purltimeout=30
        ding= 'utf-8'
        printresp2.status_code
        # print
        dw0=re.findallr“
        sj0= re.findallr“手机号码
.+
”. re.l
        pz0= re.findallr'‘产品品种
.+”. re.l
        dq0= re.findallr“所在地区
.+
”. re.l
        ……
        re模块主要是用于对数据进行匹配,也称为正则表达式模块,通过导入re模块,可以直接调用各种函数来实现正则匹配。其实正则表达式本身就是一种小型的、高度专业化的编程语言,嵌入Python后为其提供更加方便、快捷的支持作用。re模块中常用的功能函数包括compile()、match()、search(). findall()等函数,本程序用到了findall()函数,re.findall遍历匹配,可以获取字符串中所有匹配的字符串,返回一个列表。格式:re.findall
pattem stringflags=0)。
        Requests模块是使用Python编写爬虫必备模块,能够帮助我们方便地爬取HTTP站点。其中要想需要爬取的网站发出请求,即使用url)函数,
        urltimeout=30
        Http定义了与服务器进行交互的不同方式,这里面就要用到四种最基本的方法GETPOSTPUTDELETE与之对应。上面的程序用到的()来读取指定网页的信息,由于只涉及对网站信息的爬取而不会对信息就行修改,正是利用其查询的功能。
        完成数据的爬取后的下一步就是数据的入库,因为Python负责前台数据的爬取,而MYSOL只负责后台数据的储存,因此需要有一个中间件完成两者的连接与解释,这里面采用的是第三方的tor这个中间件。在此之前首先要安装Mysql并创建一个nongnet的用户库,并继续在该用户库下创建一个nong xinxi得表。
        Create database nongnet
        Create table nongxinxi
        农信息的表要完成信息的存储,根据之前的分析,需要建立包含联系人手机号码所在地区产品品种”4个字段的表。
        然后要将爬到数据入库,必须要获取访问数据库,这时候需要创建一个游标,cur= conn.cursor(),然后即可通过该游标操作execute()方法,即可实现将查询到的信息按着字符的格式插入到已经建好的nongnet库下的nongxinxi表中(如图1):
        S qli=“insert into nongxinxivalues%s%s%s%s
        utesqli,(‘dw’’ sj’’pz’’dq’))
        接下来就可以利用数据库的查询功能完成数据的筛选和挖掘了,比如想获得山东临沂地区苹果的联系人和手机号码,利用数据库的筛选功能就可以这是就能直观的在结果中看到了。
        本次研究了利用大数据领域今年最流行的Python语言和Mysql数据库技术,对中国农产品信息网( t)进行数据爬取,以一种新的技术帮助信息获取者快速高效的获取信息的一种技术手段。