美文网首页
Python实战课程1-2练习:爬取商品信息

Python实战课程1-2练习:爬取商品信息

作者: mugichya | 来源:发表于2016-11-13 18:45 被阅读58次

    学会了制作本地网页,了解网页构成,接着便可以使用强大的第三方库BeautifulSoup爬取网页信息了。
    下面有一个网页的商品信息,我们要获得商品名称,价格,图片,星级评价以及浏览量等信息,将信息分类提取出来方便我们查阅。


    Paste_Image.png
    1. PyCharm新建python文件
      新建一个以main.py文件
    2. 从index.html读取内容
      打开创建的main.py文件和index.html文件,用浏览器查看html编写的网页,右键“检查”copy需要爬取的信息标签(商品名称,图片地址,价格,评分星级,浏览量等),注意用copy selector的方式赋值保存到main.py文件中注释备用。
    Paste_Image.png

    注意BeautifulSoup不支持nth-child语法,后续使用时候将其删去。

    1. 编写main.py文件爬取网页信息
      导入bs4库,以读取方式打开html文件。用BeautifulSoup库读取网页内容,包含html文件和所需分析引擎,可以选择如下几种(这里我使用的是lxml):
      (1) html.parser: BeautifulSoup内置引擎,无须安装
      (2) html5lib: 需要安装,命令 pip instanll html5lib (或者也可以通过PyCharm安装,下同)
      (3) lxml: 需要安装,命令 pip install lxml
      ![Uploading Paste_Image_067521.png . . .]
      根据CSS.Selector分别提取各个项目相应的信息,用select()方法得到结果列表:
    Paste_Image.png

    用for循环和zip()函数遍历每一项信息放入字典容器中。接下来几部很关键,对于各个标签提取属性信息不同,需要注意:

    1. 商品名称,价格和浏览量都是文本信息,用get_text()方法即可得到相应内容;
    2. image是图片,我们需要获取图片地址,这是图片标签imag的src属性,因此用get()方法直接获取,即image.get('src');
    3. 最后是星星数目,需要用到find_all()方法:
      find_all(name, attrs, recursive, text, **kwargs)
      find_all()方法搜索当前tag的所有tag子节点,并判断是否符合过滤器的条件。
      在网页中检查星星标签时可以发现规律,根据这个作为条件筛选得到元素个数就是星星数目。
      ——————————————————————
      爬取获得的信息如下:
    Paste_Image.png

    附录(源码):

    Paste_Image.png Paste_Image.png

    相关文章

      网友评论

          本文标题:Python实战课程1-2练习:爬取商品信息

          本文链接:https://www.haomeiwen.com/subject/jeecpttx.html