【爬虫学习】BeautifulSoup 学习心得

来源:互联网 发布:罗伊马斯坦 知乎 编辑:程序博客网 时间:2024/04/29 16:09

最近在根据教程学习网络爬虫,如何从真实网页中获得信息,虽然之前也写过一些爬虫,但是始终没有经过科班培训,这次算是正式学习吧,同时记录一些心得体会


上图是一个简单的网页解析代码,同时可以作为学习beautifulsoup库的样本


soup.select方法:

1、使用的是CSS selector路径,不是xpath路径(可用于Scrapy)

2、例如titles中,如果想要依靠标签中有某个属性来实现筛选,则在CSS selector中修改为   标签[属性],例如:a[target="_blank"]

     同样,对于imgs中,使用宽度=160这个属性,进行图片的筛选

3、在cates(类别信息)中,一个标题下有多个类别,则可以通过选择父节点(p13n_reasoning_v2)标签(位置信息)来获得所有信息

4、在复杂网页中,往往CCS Selector路径很长,其实并不必要,只要能找到唯一的标签来定位该元素即可,例如<a class = "time"> 这时搜索.time如果唯一,则可以使用soup.selcet('a.time')来获得内容

     如果审查内容为<  id = "content">后边有<span class = 'price'>  且搜索唯一,则可是用soup.select('#content span.price')

也就是说  #  代表  id     .   代表 class

5、学到一种字典解析方式,后边加上一个if判断句

6、除了利用soup.select方法外,还可以利用soup.title.text方法,如果浏览网页的标题在浏览器的标签页上的话,这是最简单的实现方法


soup.find_all方法

图2  41行中,span为标签,c_25d是class,这样找到所有的这种样式的内容

soup解析内容时候

1、常用的是get_text()方法

2、获得连接信息,则利用get方法,参数为具体链接的标签,例如img.get('src')

3、对于多个信息,利用stripper_strings方法来得到



小技巧

1、学会好的展示方法,将数据整理为一个字典,利用zip函数

2、在爬取连续多个页面的网页时,可以“列表解析式”构造网址

例如:url = ['www.****{}.com'.format(str(i)) for i in range(1,100,3)]

3、使用headers={'User-Agent':' '

'Cookie':' '}来模拟人类登陆

4、为了反爬虫,可以爬取手机(移动端)页面

原创粉丝点击