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

推荐阅读更多精彩内容

  • 输出结果: 每个商品的信息存入字典,使用列表保存所有商品信息 作业 github 地址 功能,获取: 图片地址 价...
    超net阅读 451评论 0 1
  • 这次作业是抓取本地网页的商品信息,最终关于find_all()还是看了答案才解决掉。 先上结果 代码如下: 出现问...
    简单电脑杀手阅读 521评论 0 0
  • 在之前一篇抓取漫画图片的文章里,通过实现一个简单的Python程序,遍历所有漫画的url,对请求所返回的html源...
    msq3阅读 11,549评论 14 88
  • ㈠任务内容:爬取本地网页的商品信息(商品名称、价钱、评分、浏览量) (二)最终成果展示: (三)我的代码: (四)...
    魏魏魏_1500阅读 158评论 0 0
  • “喜爱欧洲久远的历史和古老的建筑……”同行小伙伴来这里的理由听上去好高级🤔, 而我怎么可能告诉他们自己仅仅是因为听...
    尼克Li阅读 672评论 6 4
  • 昆明梁艳分享第五十八天。网络五期初级。2017.07.14 今天一早被社区书记叫去替补因突然生病不能参加下午的...
    诗心小鹿阅读 47评论 0 0
  • 人生难得一知己,那个真正懂你爱你的人才值得你交付真心。但是,你依然要记得,别爱得太满,永远要留给自己转身的余地,爱...
    Vicky静静阅读 59评论 0 0