python爬虫(机器学习数据集的制作方式之一)

   好多python学习的书籍,最后一章,都会以python爬虫作为收尾的考核学习。

在我看来,这个只是机器学习的开始。

因为现在主流的 统计机器学习,都是需要训练集的。而训练集的收集,除了在网上找一些别人已经收集好的。还需要自己能够收集数据! 

自己的训练网络,自己的数据适应性肯定是最好的。如果用别人的 训练集,还得按照别人的训练集是否有Label ,来确定自己是否为有监督模型。  总之!自己收集自己想要的数据集才是王道!

那爬虫是如何运作的呢?

先解释我们现在的浏览器的运作流程和简单原理

      1.首先你的电脑的浏览器,看作是客户端(信息使用者)

      2.而你想访问的网址,他的 信息储存的地方是 服务端(信息管理者)

      3.当你填入网址的时候,就是由客户端向服务端发送申请。

      4.服务端审核申请,如果符合条件,就将信息发送给客户端。 (信息是该网站的源代码——html代码)

      5.本地浏览器解释翻译HTML代码,然后转换成我们看的懂的 形式呈现出来。

爬虫的原理与其类似,网络爬虫——web spider。就好比一个蜘蛛,可以爬向蛛网的 一个节点,然后可以从该节点爬到和其链接的所有节点。

 所以爬虫的流程如下:

     1.找出初始网址的 地址,获取其源代码。然后可以从该网站源代码中,访问其中包含的其他网站,然后获取他们的源代码。如此循环。(有权限的 情况下)

      2.然后根据你做输入的 表格,来对你所获得的信息加以筛选和处理。


python爬虫所需要的库  urllib2(python2),   urllib2(python3),beautifulsoap(早就没有在更新库),bs4(beautifulsoap4即前者升级版),re库(正则化方式,较为落后,没有bs4方便,但是好多BS4满足不了的地方,他可以满足。可以学习一哈)

具体的学习网站在这里:

       urllib- python2:   https://docs.python.org/3/howto/urllib2.html

       urllib -python3:   https://docs.python.org/2/howto/urllib2.html

       bs4-python:       http://www.jb51.net/article/65287.htm

        re-python :        https://www.cnblogs.com/vamei/archive/2012/08/31/2661870.html


下面是我的学习心得

第一步:打开一个自己想要爬的网站,网址如下(随便找了一个某宝iwatch):https://s.taobao.com/search?q=%E8%8B%B9%E6%9E%9C%E6%89%8B%E8%A1%A8&imgfile=&commend=all&ssid=s5-e&search_type=item&sourceId=tb.index&spm=a21bo.2017.201856-taobao-item.1&ie=utf8&initiative_id=tbindexz_20170306   

python爬虫(机器学习数据集的制作方式之一)

         

第二步: 右键点击打开 “检查”:

python爬虫(机器学习数据集的制作方式之一)

此步骤可以看到  HTML源代码,和各属性状况。


第三步:点击network ,然后点击第一个文件

python爬虫(机器学习数据集的制作方式之一)

可以看到一些类似如下数据:

python爬虫(机器学习数据集的制作方式之一)

可以看到 Request URL ,  Remote Address等  。如果你想要这些列表中的文件,便可以用urlopen来获取该url下的数据了大概可以用如下代码:

import urllib.request

req=urllib.request.Request('https://g-search1.alicdn.com/img/bao/uploaded/i4')

try:
    urllib.request.urlopen(req)
except urllib.request.URLError as e: # URL请求错误
    print(e.reason)

BUT!!我确失败了,在上述代码信息中,第一个文件的request url 是:https://g-search1.alicdn.com/img/bao/uploaded/i4/imgextra/i1/16681881/TB2.puxenTI8KJjSsphXXcFppXa_!!0-saturn_solar.jpg_180x180.jpg_.webp

而这个却没有申请成功,返回的是NOT FOUND 也就是说   可能是没有权限??

用这个URL:https://g-search1.alicdn.com/img/bao/uploaded/i4

他会下载一个二进制文件,本人猜测可能是他们的目录或者是地址信息吧。

总之,这一步得到的信息,即使不能爬出什么文件,也可以得到一些有用的信息,例如:远程地址,和是GET到的信息还是POST到的。


第四步:查看源代码找规律!

python爬虫(机器学习数据集的制作方式之一)

这是HTML源代码的一部分,我们可以看得很清楚,当前<script>下的红色字样,里面有我所需要的那些信息,比如:店的位置——江苏南京 ,店的名字——苦工的店......。

实现代码如下:

#-*-coding:utf8-*-
import requests
import urllib.request
import re

url='https://s.taobao.com/search?q=%E8%8B%B9%E6%9E%9C%E6%89%8B%E8%A1%A8&imgfile=&commend=all&ssid=s5-e&search_type=item&sourceId=tb.index&spm=a21bo.2017.201856-taobao-item.1&ie=utf8&initiative_id=tbindexz_20170306'

try:
    responses = requests.post(url)
    responses2 = re.findall('<script>(.*?)</script>', responses.text, re.S)
    for res in responses2:
        print(res)      #输出<script>之内所有的东西
    responses3 = re.findall('item_loc":"(.*?)","view_sales', str(responses2), re.S) #爬出淘宝店的地址

    print('地址如下:')
    for response in responses3:
        print(response)
    print('1234')

except urllib.request.URLError as e: # URL请求错误

python爬虫(机器学习数据集的制作方式之一)

跑出来了一部分店的地址,但是没有全部跑出来。不过原理大致如此,希望对大家有帮助!!!

欢迎评论和分享一些心得!!