zoukankan      html  css  js  c++  java
  • 爬取汽车之家新闻


    a.首先伪造浏览器向某个地址发送HTTP请求,获取返回的字符串

    import requests
    response=requests.get(url='地址')#get请求 response.content  #内容 response.encoding=apparent_encoding  #检测编码形式,并设置编码 response.text  #自动转码

    b.通过Beautifulsoup4解析HTML格式字符串

    from bs4 import BeautifulSoup
    
    soup = BeautifulSoup('<html>...</html>', 'html.parser')#解析嵌套,html.parser解析器,lxml等
    div = soup.find(name='标签名', id='li')
    div = soup.find(name='标签名', _class='li')
    div = soup.find(name='标签名', attrs={'id' = 'li', 'class':'id'})
    
    div.text
    div.attrs
    div.get('href')
    
    divs = soup.find_all(name='标签名', id='li')
    divs = soup.find_all(name='标签名', _class='li')
    divs = soup.find_all(name='标签名', attrs={'id' = 'li', 'class':'id'})
    #find找到匹配成功的第一个
    #find_all全部匹配,divs为列表
    import requests
    from bs4 import BeautifulSoup
    
    #下载页面
    ret=requests.get(
        url='https://www.autohome.com.cn/news/'
    )
    
    # print(ret.apparent_encoding) #检测编码形式
    # print(ret.content) #内容
    
    ret.encoding=ret.apparent_encoding #设置编码
    # print(ret.text)    #自动转码
    
    #解析,获取想要的内容 beautifulsoup4
    soup=BeautifulSoup(ret.text,'html.parser') #解析嵌套,html.parser解析器,lxml
    
    #find找到匹配成功的第一个
    #find_all全部匹配
    div=soup.find(name='div',id='auto-channel-lazyload-article')
    li_list=div.find_all(name='li')
    
    for li in li_list:
        #标题
        h3=li.find(name='h3')
        if not h3:
            continue
        # print(h3.text)#h3.text取文本
        #简介
        p=li.find(name='p')
        # print(p.text)
        #地址
        a=li.find(name='a')
        # print(a.attrs)#获取属性
        # print(a.get('href'))
        print(h3.text,a.get('href'))
        print(p.text)
        print('='*15)
        #图片
        img=li.find(name='img')
        src=img.get('src')
    
        file_name=src.rsplit('__',maxsplit=1)[1]
        ret_img=requests.get(
            url='https:'+src
        )
        with open(file_name,'wb') as f:
            f.write(ret_img.content)
  • 相关阅读:
    ASP.NET Core学习——2
    ASP.NET Core学习——1
    ASP.NET Core学习——前言
    数组的特性
    算法的5个层次
    VScode中写vue代码 Ctrl+/添加注释失效
    报错:[Vue warn]: Avoid mutating a prop directly since the value will be overwritten whenever the paren
    Vue中-下拉框可以选择可以填写
    Vue中对获取的数据进行重新排序
    感想
  • 原文地址:https://www.cnblogs.com/q1ang/p/9250057.html
Copyright © 2011-2022 走看看