在python爬取数据时,通过requests和BeautifulSoup把网页内容解析下来是第一步,这一步通常很简单,数据爬取的重头戏主要集中在所需内容的精准定位上,定位元素的方式有多种,今天主要讲一下select的用法。
需要注意一点,select用法会将所有满足条件的值取出,组成一个list
select定位元素有5种方式:
一、通过标签名查找
用法:soup.select(标签名) 例子:soup.select(h1)
我们以自如一个租房页面举例,如下图,假如现在要获取logo所在位置的代码,查看html可知,对应的标签名为h1
from bs4 import BeautifulSoup
import requests
url='http://gz.ziroom.com/z/vr/61669497.html'
urlhtml=requests.get(url)
urlhtml.encoding='utf-8'
soup=BeautifulSoup(urlhtml.text,'lxml')
alink = soup.select('h1')
print(type(alink))
print('------------------**----------------------')
print(alink)
二、通过类名查找
用法:soup.select(.类名)
同样用上面的例子,logo所在位置的类名就是logo,因此直接用soup.select('.logo')即可
alink = soup.select('.logo')
print(type(alink))
print('------------------**----------------------')
print(alink)
三、通过 id 名查找
用法:soup.select(#id名)
定位到元素的id=‘logoSvg’,则可以用soup.select('#logoSvg')定位
alink = soup.select('#logoSvg')
print(alink)
四、组合查找
有时单独用标签名、类名或id名很难定位元素,这时可以根据需要选择其中的多种方式组合在一起进行定位,不同方式之间用空格分开
#通过标签和class组合查找
alink = soup.select('div .user_center')
print(alink)
#通过标签和ID组合查找
alink = soup.select('div #cao')
print(alink)
五、属性查找
查找时还可以加入属性元素,属性需要用中括号括起来,注意,属性和标签属于同一节点,所以中间不能加空格,否则会无法匹配到。
alink = soup.select('a[target="_blank"]')
print(alink)
最后的最后,select用法很灵活,一定不要拘泥于规则,大胆组合使用