学会了制作本地网页,了解网页构成,接着便可以使用强大的第三方库BeautifulSoup爬取网页信息了。
下面有一个网页的商品信息,我们要获得商品名称,价格,图片,星级评价以及浏览量等信息,将信息分类提取出来方便我们查阅。
- PyCharm新建python文件
新建一个以main.py文件 - 从index.html读取内容
打开创建的main.py文件和index.html文件,用浏览器查看html编写的网页,右键“检查”copy需要爬取的信息标签(商品名称,图片地址,价格,评分星级,浏览量等),注意用copy selector的方式赋值保存到main.py文件中注释备用。
注意BeautifulSoup不支持nth-child语法,后续使用时候将其删去。
- 编写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()方法得到结果列表:
用for循环和zip()函数遍历每一项信息放入字典容器中。接下来几部很关键,对于各个标签提取属性信息不同,需要注意:
- 商品名称,价格和浏览量都是文本信息,用get_text()方法即可得到相应内容;
- image是图片,我们需要获取图片地址,这是图片标签imag的src属性,因此用get()方法直接获取,即image.get('src');
- 最后是星星数目,需要用到find_all()方法:
find_all(name, attrs, recursive, text, **kwargs)
find_all()方法搜索当前tag的所有tag子节点,并判断是否符合过滤器的条件。
在网页中检查星星标签时可以发现规律,根据这个作为条件筛选得到元素个数就是星星数目。
——————————————————————
爬取获得的信息如下:
附录(源码):