对汽车之家的爬取:

import requests    #需要自己装
from bs4 import BeautifulSoup

response = requests.get("https://www.autohome.com.cn/news/") #get请求
#ptint(response.text)      #可以查看相应体
response.encoding = 'gbk'   #拿到的相应体中文出现乱码,因为汽车之家用的gbk

soup = BeautifulSoup(response.text,'html.parser')#html.parse是python内置的解析器,见过html字符串解析成bs4对象

div = soup.find(name='div',attrs={'id':'auto-channel-lazyload-article'}) #找div标签,id就是chrome检查网页找到的需要爬取网页的html文件表示的地址

li_list = div.find_all(name='li') #find 找的是与之相匹配的第一个标签,这个语句的作用是找到第一个li下边的所有标签

for li in li_list:
    title = li.find(name='h3')  #h3是标题标签找到所有新闻的标题
    if not title:
        continue                #因为有的没有title 在此网页为广告位
    p = li.find(name='p')       #p标签为简介,拿取简介
    a = li.find(name='a')       #爬取超链接

    print(title.text)          #拿到了标题的文本格式
    print(a.attrs.get('href')) #attrs爬取所有属性,href为此网页超链接的标签,拿到的是一个字典
    print(p.text)

    img = li.find(name='img')
    src = img.get('src')        #.get内置attrs 默认爬取所有图片
    src = "https:" + src
    print(src)

    #再发起请求,下载图片
    file_name = src.rsplit('/',maxsplit=1)[1] #写入文件名https://www3.autoimg.cn/newsdfs/g3/M04/73/E1/120x90_0_autohomecar__ChsEkVw39-SAUpGuAAIbTBZYnvA788.jpg maxsplit对文件名进行分割
    ret = requests.get(src)            #再次发起request请求,地址为src
    with open(file_name,'wb') as f:
        f.write(ret.content)                 #.content是下载返回的二进制数据

  python中的split、rsplit和splitlines

仅作为本人笔记,非原创

你可能感兴趣的:(爬虫案例)