BeautifulSoup 使用多条件查询
最近开始学习python的爬虫,开始的时候单纯的用requests.get(url)取得源代码后,用正则表达后来取得相关的数据,效率不高,接触到BeautifulSoup,发现确实方便.
正好遇到一个问题,需要取的数据在两个div中,是两个class名,最开始的时候是取得两次来得到数据,就想精简一下,弄成两个值的或的关系,发现例子比较多的是不同标签的属性可以是与的关系,在网上找了一圈没有发现自己想要的结果
仔细的看下了BeautifulSoup的文档,发现在例子里面有讲: 同时用多种CSS选择器查询元素的例子:
soup. select ( "#link1,#link2" ) # [Elsie, # Lacie]
soup. select ( "div.class_first_name,div.class_two_name" ) 或 soup. select ( "div[class~=class_first_name], div[class~=class_two_name]" ) 或 soup. select ( "div[class=class_first_name], div[class=class_two_name]" )
soup. select ( ".sister" ) # [Elsie, # Lacie, # Tillie] soup. select ( "[class~=sister]" ) # [Elsie, # Lacie, # Tillie]
于是结合这几个例子,自己结合一步步的试,先试出不指定标签时获取两个class的与的关系,然后再加上指定标签的,达到了自己的目的
现在新的问题又来了,我想取的两个值都出现在div第一次出现的时候,这个倒是可以用limit的值来控制
如果值是这样的ElsieElsieElsieElsie
soup. select ( "div[class=class_first_name], div[class=class_two_name]" , limit=2)
ElsieElsieElsieElsie