小注:今天可算是学会简书的markdown切换了。点击上面“预览模式”。
BeautifulSoup爬取静态页面套路
![](https://img.haomeiwen.com/i2582504/bdee771bc86f7bf4.png)
鼠标移到想了解的信息上,右键点击检查,再在有阴影显示的地方右键显示copy,选取selector,如下图:
![](https://img.haomeiwen.com/i2582504/2cab53694860fce4.png)
需要爬取什么都要先将这些东西copy出来,然后做一些修改,修改在后面会说到。基本上的工作就做完了,下来就是代码了:
![](https://img.haomeiwen.com/i2582504/d1f44f9ea0600fac.png)
先用
soup = BeautifulSoup(url, 'lxml')
创建一个实例,然后select
一下刚才复制的selector,注意那些child都需要删除。其中有个难点就是摘取星星,也就是等级的作法:自己的方法是用debug模式一级一级的去掉节点,直到能返回数据,这个过程是一次一次尝试出来的。
![](https://img.haomeiwen.com/i2582504/ca0252c12f4c4f68.png)
第二步用到了一些方法:
- get_text(),
- get(xx)(选中xx属性的value),
-
find_all()
关键词就是迭代,把数据以字典方式展现出来,其中的关键点还是星星个数,就是用find_all()中的属性,查找这个属性value的个数
![](https://img.haomeiwen.com/i2582504/06a294cdc7ff1570.png)
所以用
len()
去数个数就可以了
爬取结果是:
![](https://img.haomeiwen.com/i2582504/a326dc67eebebeec.png)
![](https://img.haomeiwen.com/i2582504/fe3d251ac61d921b.png)
原谅我不会跨屏截图。
总结:
1.创建实例soup=BeautifulSoup(url, 'lxml')
2.select拷贝的节点路径,删除child相关信息。目的是抓取的是所有的同类信息,titles就是抓取了所有title。特别注意的是,我们select的数据返回的是一个列表所以才能在for title in titles:
这里做迭代
3.get_text(),get(), find_all()拿到指定的value。目的是去掉tag等信息
4.迭代出来
网友评论