zoukankan      html  css  js  c++  java
  • 网页爬虫学习之获取网页中标签内容

    (1)本地网页,通过网页中的元素进行筛选想要获取的内容

    web_parseDemo01.py
    from bs4 import BeautifulSoup
    #1、解析网页内容,网页的构成
    with open('C:/Users/GXY/PycharmProjects/untitled/homework.html','r',encoding='UTF-8') as wb_data:
    Soup=BeautifulSoup(wb_data,'lxml') #"lxml"是可以用来解析html网页的其中一个第三方库,wb_data是用来解析的文件
    # print(Soup)
    #2、描述要抓取的元素位置
    images=Soup.select('body > div.main-content > ul > li > img')
    titles=Soup.select('body > div.main-content > h2')
    hrefs=Soup.select('body > div.header > ul > li > a')
    # print(images,titles,hrefs,sep=' .................. ')
    #3、处理标签中的文本,筛选所需要的信息
    #a.使用for循环来取出所有的元素,然后对元素使用方法
    #for href in hrefs:
    # print(href.get_text())
    #...........................
    #通过zip()将所有元素放在一个容器中进行循环,并且对其中的每一个元素进行字典构造,
    for image,title,href in zip(images,titles,hrefs):
    data={
    'image':image.get('src'),#image的属性不同于其它文本属性,其链接来自于img的src属性,所以通过get()进行获取
    'title':title.get_text(),
    'href':href.get_text()
    }
    print(data)

    运行结果:

    {'image': 'images/nz1.jpg', 'title': 'The beach', 'href': 'home'}
    {'image': 'images/nz2.jpg', 'title': 'the abstract', 'href': 'site'}

    (2)真实网页,通过网页中的元素进行筛选想要获取的内容

    web_parseDemo02.py
    from bs4 import  BeautifulSoup
    import requests

    url='http://s.tuniu.com/search_complex/whole-cd-0-%E9%A9%AC%E5%B0%94%E4%BB%A3%E5%A4%AB/'#取一个可以访问的真实网址(本人仅仅是用来学习,无其它用途)。
    web_data=requests.get(url)
    soup=BeautifulSoup(web_data.content,'lxml')
    #print(soup)
    hrefs=soup.select('.J_banner > li > a')#.J_banner为CSS样式,即class=.J_banner的样式
    #images1=soup.select('.thebox > li:nth-of-type(1)')
    #images=soup.select('.thebox > li:nth-of-type(1) > div:nth-of-type(1) > a:nth-of-type(1) > div:nth-of-type(1) > div:nth-of-type(1) > img:nth-of-type(1)')
    #images=soup.select('.thebox > li > div > a > div > div > img')#一次性取不到的时候只能逐层取
    images=soup.select('.thebox > li > div > a > div > div > img')
    #print(hrefs)

    for href,image in zip(hrefs,images):
    data={
    'href':href.get('href'),#注意,是title,没有s,是列表中的被遍历的对象:对象对应的值
    'image':image.get('data-src')#注意,当一个标签有多个属性时,需要通过该标签对象调用get()进行获取属性的内容,img标签的获取是通过“data-src”或“src”,a标签是href属性等。
    }
    print(data)
    运行结果:

    {'href': 'http://www.tuniu.com/tools/choice/', 'image': '//m.tuniucdn.com/fb2/t1/G5/M00/4B/5B/Cii-tFpq0ZGIH31vAKA6IduvD-AAAC2GAAAAAAAoDo5706_w160_h90_c1_t0.jpg'}
    {'href': 'http://www.tuniu.com/g38636/pkg-all-0/', 'image': '//m.tuniucdn.com/fb2/t1/G1/M00/3E/36/Cii9EVbyR2GIYpAGABx_GcrnlmgAACvfQL8kM4AHH8x960_w160_h90_c1_t0.jpg'}
    {'href': 'http://www.tuniu.com/g3412457/pkg-all-0/', 'image': '//m.tuniucdn.com/fb2/t1/G2/M00/83/40/Cii-T1fqKEmILjyJAAYAW5VTCYQAACzhgKiKAUABgBz980_w160_h90_c1_t0.jpg'}
    {'href': 'http://www.tuniu.com/g38629/pkg-all-0/', 'image': '//m.tuniucdn.com/filebroker/cdn/olb/bd/2e/bd2e8f69bf6a281e6ba82ac944691133_w160_h90_c1_t0.jpg'}
    {'href': 'http://www.tuniu.com/g51091/pkg-all-0/', 'image': '//m.tuniucdn.com/fb2/t1/G2/M00/41/1D/Cii-T1hGam6IMZqDAANSP7BE3ysAAFNQAD7RogAA1JX370_w160_h90_c1_t0.jpg'}
    {'href': 'http://www.tuniu.com/g38604/pkg-all-0/', 'image': '//m.tuniucdn.com/filebroker/cdn/prd/c3/c4/c3c41999583e9d66173291c11546778b_w160_h90_c1_t0.jpg'}
    {'href': 'http://www.tuniu.com/g38641/pkg-all-0/', 'image': '//m.tuniucdn.com/fb2/t1/G1/M00/16/B2/Cii9EVbX5J2IV01nACFXGNk8OL8AACdtAHFhtYAIVcw700_w160_h90_c1_t0.jpg'}



  • 相关阅读:
    HDU1312 ZOJ2165 Red and Black
    HDU1312 ZOJ2165 Red and Black
    HDU1181 变形课【DFS】
    codevs1017 乘积最大
    codevs1220 数字三角形
    codevs1169 传纸条
    codevs1219 骑士游历
    codevs1010 过河卒
    codevs1166 矩阵取数游戏
    codevs1154 能量项链
  • 原文地址:https://www.cnblogs.com/gaoxy/p/10186329.html
Copyright © 2011-2022 走看看