课时11

2016-05-12  本文已影响0人  ooocoo
1.jpg

那么当我们只采集单页面 不想 用 for 赋值 zip() 的时候我们就需要对该列表里面的函数进行选择。

title = soup.select('div.pho_info > h4')[0].text 

这里面是选择第一项 然后对他取文本的意思。

而这里面为什么选择 div.pho_info > h4 是因为 这是里标题最近的 单独 纯在好找的 一个层级。

1.jpg

在具体页面里面,一般向获取的元素都是在自己单独的一个div 或者样式里面,而在这里面我们获取自己想要的元素就是通过 找到要获取元素所在div ,然后再找他的样式结构。

address = soup.select('div.pho_info > p')[0].get('title') 
1.jpg

这里面的 返回值, 用什么来接 就返回到哪里。

1.jpg

要爬取具体内容页面时 首先就要得到他的具体链接地址,而具体链接地址是放在列表页面的,那么我们就需要一个函数来爬取列表页面,然后把获取到的内容页面链接放入到一个空列表里面。

1.jpg

这个标签是存在于a 标签里面的,
所以写为,a.resule_img_a

soup.select('a.resule_img_a'):

自己在学了这之后有一点感觉不一样但又说不出来这和之前的 筛选又有什么区别, 于是努力回想 如果按照之前的筛选方法 一般都是在要选的链接上, 右键复制 selector 然后 在看要获取的属性。

1.jpg 1.jpg

我的代码

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)
上一篇下一篇

猜你喜欢

热点阅读