Python03,课时15-小猪租房-爬虫

这是老师留下的作业,比百度贴吧难度大多了。
参考了老师的代码,发现果真有精妙的地方,这里特别好好整理一下,学习一下。

#课时15---level one
import requests
from bs4 import BeautifulSoup
#下面那个 鉴别性别的函数,很重要,这个小功能也值得用函
数解决,挺有意思。#其次,这个函数要写在前面,否则没法调
用成功,程序运行时是从上到下运行的。
def get_hoster_sex(class_name):
    if class_name == ['member_ico']:
        return '男'
    else: 
        return '女'

#得到该租房信息-详细信息!
def get_info_onepage(url):
    wb_data=requests.get(url) 
    soup=BeautifulSoup(wb_data.text,'lxml')
    title=soup.select(' div > h4 > em')[0].get_text()
    address=soup.select(' div > p > span.pr5')[0].text
    price=soup.select(' div.day_l > span')[0].text
    first_pic2=soup.select('#curBigImage')[0].get('src') #坦白讲,为了获得第一张图片,稍微复杂一些。
    hoster_pic=soup.select('#floatRightBox > div.js_box.clearfix > div.member_pic > a > img')[0].get('src')
    hoster_name=soup.select('#floatRightBox > div.js_box.clearfix > div.w_240 > h6 > a')[0].text
    hoster_sex=soup.select('#floatRightBox > div.js_box.clearfix > div.member_pic > div')  #这是一个列表哈,要注意!

data=
{'titile':title,
'address':address,
'price':price,
'first_pic2':first_pic2,
"hoster_name":hoster_name,
'hoster_pic':hoster_pic,
'hoster_sex':get_hoster_sex(hoster_sex[0].get('class'))
}

print(data)

#得到列表页下,所有的租房信息!
def get_links_one(one_url):
    wb_data = requests.get(one_url)
    soup = BeautifulSoup(wb_data.text, 'lxml')
    links = soup.select('#page_list > ul > li > a')

for link in links:
    clink = link.get('href')
    get_info_onepage(clink)# 这个函数必须在上文中写完,这里才能正常引用!

one_url=['http://sy.xiaozhu.com/search-duanzufang-p{}-0/'.format(number) for number in range(1,10)]
 # 结果是一个list列表。写法非常的新颖!!!
print(one_url)

for single_url in one_url:    
    get_links_one(single_url)#最后,执行程序,得到结果。

以上这段代码,有一个地方把我卡住了,就是判断下性别的地方,没想到他竟然用的是一个函数来解决的,很巧妙。

其次,one_url 那块写的也非常巧妙,打死我也想不出来还可以写成那种格式的,也是非常的巧妙。

你可能感兴趣的:(Python03,课时15-小猪租房-爬虫)