#爬虫的流程分析:
1.请求数据:requests库(这个库可以非常方便的去请求网络数据)
*安装方法:
pip install requests
2.将请求下来的数据解析出来,获取我们想要的数据,把不想要的数据抛弃掉。
*BeautifulSoup:
pip install bs4
*lxml:
pip install lxml
3.将解析后的数据保存下来。如果是文字类型的,可以保存到文件中或者是数据库中或者缓存中都可以。如果是文件类型,比如图片,视频,那么可以保存到硬盘中。
4.无论你的爬虫是大还是小,他都是由这几个模块组成的。
-----------------------------------------------------------------分割线----------------------------------------------------------------------------------------------
第一只简单的爬虫
import requests
headers={
"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"
}
response=requests.get("https://www.doutula.com/photo/list/?page=1",headers=headers)
text= response.text
print(text)
代码说明
import requests
导入requests包。
headers={
"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"
}
headers=headers;对请求身份进行伪装,“Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36”获取方式如下:
1)右键—审查元素
2)选择“network”
3)F5刷新–选择左侧任一项—找到最下方的"User-Agent"
二、增加数据解析
import requests
from bs4 import BeautifulSoup
#首先对请求身份进行伪装
headers={
"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"
}
response=requests.get("https://www.doutula.com/photo/list/?page=3",headers=headers)
text= response.text
# print(text)
soup=BeautifulSoup(text,"lxml")
#img_list=soup.find_all("img",attrs={"class":"img-responsive lazy image_dta loaded"})
img_list=soup.find_all("img",attrs={"class":"img-responsive lazy image_dta"})
#print(img_list)
for img in img_list:
img_url=img["data-original"]
print(img_url)
其中:
soup=BeautifulSoup(text,"lxml")
对数据解析。
#img_list=soup.find_all("img",attrs={"class":"img-responsive lazy image_dta loaded"})
按照如图所示的步骤,选择class,并复制其值;并将其后面的“loaded”删除。
print(img_list)
运行此行代码后会将所有的图片都列出来。如下为其中一张图片的列表。
[<img alt="平平淡淡才是真" class="img-responsive lazy image_dta" data-
backup="http://img.doutula.com/production/uploads/image//2019/03/12/20190312392310_fHazjZ.jpg!dta" data-
original="https://ws4.sinaimg.cn/bmiddle/9150e4e5gy1g0zq7i7a2ej20qh0qldhb.jpg"
src="//static.doutula.com/img/loader.gif" style="width: 100%; height: 100%;"/>,
for img in img_list:
img_url=img["data-original"]
print(img_url)
从以上的列表中,寻找图片的url为“data-original”的图片来链接。
三、下载第一张图片并保存
import requests
from bs4 import BeautifulSoup
from urllib import request
#首先对请求身份进行伪装
headers={
"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"
}
response=requests.get("https://www.doutula.com/photo/list/?page=3",headers=headers)
text= response.text
# print(text)
soup=BeautifulSoup(text,"lxml")
#img_list=soup.find_all("img",attrs={"class":"img-responsive lazy image_dta loaded"})
img_list=soup.find_all("img",attrs={"class":"img-responsive lazy image_dta"})
#print(img_list)
for img in img_list:
img_url=img["data-original"]
print(img_url)
request.urlretrieve(img_url,"test.jpg")
break
其中
request.urlretrieve(img_url,"test.jpg")
break
从img_url中下载一张图片,并重命名为test.jpg;
运行效果:
___________________________________________________________________________________________________
参考链接:https://edu.csdn.net/course/play/20379/255979