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

学会了制作本地网页,了解网页构成,接着便可以使用强大的第三方库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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容