爬取汽车之家

爬汽车之家新闻

"""
### 爬取汽车之家新闻


import requests

# 向汽车之家发送get请求,获取到页面

ret = requests.get('https://www.autohome.com.cn/news/1/#liststart')
# print(ret.text)

# 用bs4解析
from bs4 import BeautifulSoup

# 实例化得到对象,传入要解析的文本,解析器
# html.parser内置解析器,速度要稍微慢一点,但是不需要装第三方模块
# lxml:速度快一些,得安装 pip install lxml

soup = BeautifulSoup(ret.text, 'html.parser') # 传入一个字符串
# soup = BeautifulSoup(open('a.html', 'r'))  # 也可以是一个文件

# find(找一个)
# find_all(找所有)

# 找到页面的所有的li标签
li_list = soup.find_all(name='li')
for li in li_list:
    # li是tag对象
    # print(type(li))  # <class 'bs4.element.Tag'>
    h3 = li.find(name='h3')
    if not h3:
        continue
    title = h3.text  # 新闻标题
    desc = li.find(name='p').text # 新闻摘要
    # 对象支持[]取值,为什么? 因为重写了__getitem__魔法方法

    img = li.find(name='img')['src'] # type:str
    # print(img)
    url = li.find(name='a')['href']

    # 图片下载到本地
    ret_img = requests.get('https:'+img)
    img_name = img.rsplit('/', 1)[-1]
    with open(img_name, 'wb') as f:
        for line in ret_img.iter_content():
            f.write(line)

    print("""
    新闻标题:%s
    新闻摘要:%s
    新闻链接:%s
    新闻图片:%s
    """%(title, desc, url, img))
"""
posted @ 2020-04-08 22:19  alen_zhan  阅读(160)  评论(0编辑  收藏  举报
返回顶部