课时8

作者: ooocoo | 来源:发表于2016-05-11 00:05 被阅读0次

    爬取网页三步走

    ![ ![3.jpg](https://img.haomeiwen.com/i2052237/e7ce15933a6b722e.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) ](https://img.haomeiwen.com/i2052237/2d487d3fb8b8710a.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    • python打开本地文件
    path = 'C:/Users/Google/Desktop/web/new_index.html'
    with open(path, 'r') as f:
        Soup = BeautifulSoup(f.read(), 'lxml')
    
    • 依次选择审查元素 自己需要的selector
    1.jpg

    直接copy的 selector 和在浏览器看见的层级关系 比对下

    body > div.main-content > ul > li:nth-child(1) > img
    
    1.jpg

    li:nth-child(1) 改成 nth-of-type(1)

    • 那么我会按照层级关系 替换成图片的那样, 再者把
    body > div.main-content > ul.articles > li > img
    images = Soup.select('body > div.main-content > ul.articles > li > img')
    
    • print 函数里面 如果有多个不同类别的结果,想分割的话 如下
    print(images,titles,sep'\n---------\n')
    
    • 那么当找到的结果是多个的时候 返回的就是一个列表,如果要单独操作就需要for 循环,
    for title in titles: #这个是一个元素的时候
    for title, pic, desc, rate, cate in zip(titles, pics, descs, rates, cates): # 这个是多个 元素的  的时候 需要集体赋值。
    
    • 先说说字典构造
    1.jpg
    • 那么 下一步就需要取具体某个元素里面的值。
    'title': title.get_text(), #这个是取文本
    'pic': pic.get('src'),#取 标签里面 src的 值
    'cate': list(cate.stripped_strings)#多对一
    
    • 如果是多对一结构的时候 我们就应该在他的父级标签停下来。
    1.jpg

    这里面就要把 span 这个给删了 因为

    1.jpg

    我们要获取里面的多个标签。 下一步就要获取一个父级标签下面子标签下的所有文本信心, 就用 .stripped_strings 这个方法,由于是成组的标签 所以我们要把它列表化。

    'cate': list(cate.stripped_strings)
    
    • 下面要找出所有分数大于3 的文章, 那么我应该把数据添加到列表里面然后再筛选。
      第一步建立空列表,
    1.jpg

    第二步 添加数据到列表

    2.jpg

    第三步 筛选

    1.jpg

    这里面有两点 第一用for函数分别取出, 第二 float 字符串为数字, 以及怎么取字典里面的键值。

    相关文章

      网友评论

          本文标题:课时8

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