python小白爬虫第一篇

由于公司大佬都去实地部署项目了,所以作为前端切图仔的我,是不用过去滴

python小白爬虫第一篇_第1张图片
嘻嘻嘻

进入今天的正题,python作为当下最热的语言,所以来蹭蹭热度,首先先从爬虫入手了。刚好是七夕前后,作为木有女朋友的前端仔,只能花花时间去爬点资源了,于是我对https://www.mzitu.com伸出了“ 猿手 ”

准备工作

python3.6安装好,本人用的是window(如果是使用linux的大佬也不会看我的文章了,哈哈哈)

requests库-----》一个python派发请求之类的库(个人理解)----》可以使用pip install requests安装

BeautifulSoup-------》一个处理xml、html之类标签的库,挺好用的,谁用谁知道---》安装同上流程

编辑器的话,看个人吧,本人是前端开发,所以直接使用vscode了

ok,一切准备就绪,准备发车

python小白爬虫第一篇_第2张图片
秋名山车神发车了

第一步

先打开网站,看看网页源码,看看网页结构(兄弟hold住,你是来爬资源的,不是来看美女的)
好的,我们打开源码(鼠标右键,查看源码),然后你会发现


python小白爬虫第一篇_第3张图片
页面源代码

你可以看到,你要爬的图片就是在这些链接里
然后,打开你的编辑器,开始撸代码,下面这些代码就不用解释了吧,都又注释

import requests
from bs4 import BeautifulSoup

# 定义请求头,防止被识别为爬虫
headers = {
  "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36",
  "Referer": "https://www.mzitu.com/"
}
# 定义爬取的网站域名
all_url = "https://www.mzitu.com/"

# 派发请求,返回响应的html
start_html = requests.get(all_url,headers=headers)

# 使用beautifulSoup处理html的字符串
Soup = BeautifulSoup(start_html.text,'lxml')

# 打印获取回来的标签
print(Soup)

运行之后,命令行就打印东西了,让我来看一哈


python小白爬虫第一篇_第4张图片
运行结果

然后你就发现:哇,和刚刚查看的源代码一模一样耶!!!!!


python小白爬虫第一篇_第5张图片
这么神奇吗?

看官别急,我们来进行下一步的操作,下一步完成之后,你距离你的小姐姐又近了一步。刚刚我们通过请求返回了整个网页的源码,但是我们并不是全部都需要,我们只要截取我们需要的就好了,这个时候就是beautifulSoup出场的机会了
import requests
from bs4 import BeautifulSoup
# 定义请求头,防止被识别为爬虫
headers = {
  "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36",
  "Referer": "https://www.mzitu.com/"
}
# 定义爬取的网站域名
all_url = "https://www.mzitu.com/"
# 派发请求,返回响应的html
start_html = requests.get(all_url,headers=headers)
# 使用beautifulSoup处理html的字符串
Soup = BeautifulSoup(start_html.text,'lxml')
# 打印获取回来的标签
# print(Soup)
# 该api是查找ul的id为pins的标签,然后再找其下面的a标签
all_a = Soup.find('ul',id='pins').find_all('a')
# 循环遍历a标签的集合
for a in all_a:
  # 打印a标签
  print(a)

打印出来的就是通过筛选的a标签了,你要知道a标签里面可是包含有好多小姐姐嘞,到这里是不是动力十足了呢


小姐姐的集合

但是还不够,我们要拿的是图片url呀,然后你就想,这个简单,我直接用正则匹配出来不就好了吗?嘻嘻嘻,其实有更简单的方法

# 在循环中打印一下
print(a['href'])

就能把a标签中的url打印出来了,下面我们加大力度,不然篇幅过长我就会被各位打的,在循环中再次请求url,会返回html页面源码,我们是筛选出其中的一个标签


循环中再次请求

你看页面你就知道的,你要爬的是大的图片,不可能爬一张小图片吧,所以我们筛选返回的html中div的class为main-image下的img中的src,拿到url之后,就是下载图片了

 resp = requests.get(a['href'], headers=headers)
    trueHtml = BeautifulSoup(resp.text, 'lxml')
    # 筛选url
    url = trueHtml.find('div', class_="main-image").find('img')['src']
    # 请求
    result = requests.get(url, headers=headers)
    # 文件的写入的路径
    with open("H:\\python\\001\\img\\"+a.get_text()+".jpg", "wb") as f:
        # 写入内容
        f.write(result.content)
        # 关闭文件
        f.close()

然后你就发现你的文件夹里面多了一些小姐姐的图片


python小白爬虫第一篇_第6张图片
嘻嘻嘻

然后你会发现,咋这么少呀,就不能多爬点,我告诉你,没问题,下面我们就来多爬点。
添加循环,该循环控制的是翻页,所以,你懂的


python小白爬虫第一篇_第7张图片
你懂我意思吧

话不多bb,直接上代码
import requests
from bs4 import BeautifulSoup

# 定义请求头,防止被识别为爬虫
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36",
    "Referer": "https://www.mzitu.com/"
}
# 定义爬取的网站域名
all_url = "https://www.mzitu.com/"
# 控制翻页
for i in range(1, 2):
    start_html = requests.get(all_url+"/page/" + str(i) + "/", headers=headers)
    # 使用beautifulSoup处理html的字符串
    Soup = BeautifulSoup(start_html.text, 'lxml')
    # 该api是查找ul的id为pins的标签,然后再找其下面的a标签
    all_a = Soup.find('ul', id='pins').find_all('a')
    all_a = list(set(all_a['href']))
    # 循环遍历a标签的集合
    for a in all_a:
            resp = requests.get(a,headers=headers)
            trueHtml = BeautifulSoup(resp.text, 'lxml')
            # 筛选url
            url = trueHtml.find('div', class_="main-image").find('img')['src']
            # 请求
            result = requests.get(url, headers=headers)
            # 文件的写入的路径
            with open("H:\\python\\001\\img\\"+a.get_text()+".jpg", "wb") as f:
                # 写入内容
                f.write(result.content)
                # 关闭文件
                f.close()

ok。到这里基本的请求你就搞定了,小姐姐也住到了你的“豪宅”(盘)里。可能你一次性爬太多的时候会报错,这是正常的,嘻嘻嘻,这只是单线程的爬虫,并没有错误处理啥的,而且使用的是你自己的ip,并没有做ip的动态代理。这个文章暂时先这样


python小白爬虫第一篇_第8张图片
溜了溜了

你可能感兴趣的:(python小白爬虫第一篇)