课时11

作者: ooocoo | 来源:发表于2016-05-12 00:05 被阅读0次
    • select 函数返回的数据是列表,即使它只有一个。
    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

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

    • 从列表页面获取到内容的链接, 那么我们就要找这些内容链接有什么相同的 属性, 这里面找到的是
      resule_img_a
    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)
    

    相关文章

      网友评论

          本文标题:课时11

          本文链接:https://www.haomeiwen.com/subject/eqburttx.html