- select 函數(shù)返回的數(shù)據(jù)是列表,即使它只有一個(gè)攘宙。
那么當(dāng)我們只采集單頁(yè)面 不想 用 for 賦值 zip() 的時(shí)候我們就需要對(duì)該列表里面的函數(shù)進(jìn)行選擇坦弟。
title = soup.select('div.pho_info > h4')[0].text
這里面是選擇第一項(xiàng) 然后對(duì)他取文本的意思。
而這里面為什么選擇 div.pho_info > h4 是因?yàn)?這是里標(biāo)題最近的 單獨(dú) 純?cè)诤谜业?一個(gè)層級(jí)裆操。
在具體頁(yè)面里面怒详,一般向獲取的元素都是在自己?jiǎn)为?dú)的一個(gè)div 或者樣式里面,而在這里面我們獲取自己想要的元素就是通過(guò) 找到要獲取元素所在div 踪区,然后再找他的樣式結(jié)構(gòu)昆烁。
address = soup.select('div.pho_info > p')[0].get('title')
這里面的 返回值, 用什么來(lái)接 就返回到哪里缎岗。
要爬取具體內(nèi)容頁(yè)面時(shí) 首先就要得到他的具體鏈接地址静尼,而具體鏈接地址是放在列表頁(yè)面的,那么我們就需要一個(gè)函數(shù)來(lái)爬取列表頁(yè)面传泊,然后把獲取到的內(nèi)容頁(yè)面鏈接放入到一個(gè)空列表里面鼠渺。
- 從列表頁(yè)面獲取到內(nèi)容的鏈接, 那么我們就要找這些內(nèi)容鏈接有什么相同的 屬性眷细, 這里面找到的是
resule_img_a
這個(gè)標(biāo)簽是存在于a 標(biāo)簽里面的拦盹,
所以寫為,a.resule_img_a
soup.select('a.resule_img_a'):
自己在學(xué)了這之后有一點(diǎn)感覺(jué)不一樣但又說(shuō)不出來(lái)這和之前的 篩選又有什么區(qū)別溪椎, 于是努力回想 如果按照之前的篩選方法 一般都是在要選的鏈接上普舆, 右鍵復(fù)制 selector 然后 在看要獲取的屬性。
- 直接一步添加自己要爬的內(nèi)容頁(yè)面
我的代碼
from bs4 import BeautifulSoupimport requestsurl = 'http://bj.xiaozhu.com/fangzi/1508951935.html'wb_data = requests.get(url)soup = BeautifulSoup(wb_data.text,'lxml')title = soup.select('div.pho_info > h4')[0].textaddress = soup.select('body > div.wrap.clearfix.con_bg > div.con_l > div.pho_info > p')[0].get('title')price = soup.select('#pricePart > div.day_l > span')[0].textpic = soup.select('#imgMouseCusor')[0].get('src')host_name = soup.select('#floatRightBox > div.js_box.clearfix > div.w_240 > h6 > a')[0].get('title')# host_gender = soup.select('div.member_pic > div')[0].get('class')[0]host_gender = soup.select('#floatRightBox > div.js_box.clearfix > div.w_240 > h6 > span')[0].get('class')[0]def get_gender(gender): if gender == 'member_girl_ico': return '女' if gender == 'member_boy_ico': return '男'get_gender('member_girl_ico')data = { 'title':title, 'address':address, 'price':price, 'pic':pic, 'host_name':host_name, 'host_gender':get_gender(host_gender)}print(data)page_link = []def get_page_link(page_number): for each_number in range(1,page_number): full_url = 'http://bj.xiaozhu.com/search-duanzufang-p{}-0/'.format(each_number) wb_data = requests.get(full_url) soup = BeautifulSoup(wb_data.text,'lxml') for link in soup.select('a.resule_img_a'): page_link.append(link)