这是老师留下的作业,比百度贴吧难度大多了。
参考了老师的代码,发现果真有精妙的地方,这里特别好好整理一下,学习一下。
#课时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 那块写的也非常巧妙,打死我也想不出来还可以写成那种格式的,也是非常的巧妙。