Python爬虫入门小程序
博主作为一个刚入门Python爬虫的新人,研究了一阵后,为了检验自己所以写了一个Python爬虫小程序,目的是为了爬取某网站的绅士图片并下载保存到本地。
思路
先打开目标网站的网址,先对其进行观察,俗话说的好,知己知彼才能百战百胜,不观察仔细了,鬼知道我们爬的都是些什么东西!接下来我们正式开始吧
首先
打开目标网页用浏览器自带的开发者工具对当前页面进行解析,发现当前所有套图的链接都在这个html文件源码里面
一个套图对应一个div,我们打开其中一个,找到一个为h2的标签,再看它下面的子标签a里面的href属性,这个属性所包含的就是当前套图的超链接,点开这个链接就能看见这个套图的详细信息以及所包含的所有图片。
因此我们只要对这个文件进行解析就能获得当前页内每一个套图的链接,接下来我们打开某一个套图的链接
然后我们再重复上述步骤,用自带的开发者工具找到当前页所有图片所在的标签行,我们可以看到每个图片都在一个id为content的div的子孙标签p内的img标签,每个img里的src属性就是图片的超链接,这个超链接也是我们所真正所需要的,知道了目标,接下来我们就开干吧
代码在这!!
if __name__ == '__main__':
url='https://www.xxxx.com'
#调用start方法开始爬取图片
start(url)
print('爬取结束')
调用start方法,并向其传入所需爬取的目标地址
def start(url):
headers={
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',
}
total_num=0
# 解析每页的页面
result=etree.HTML(requests.get(url,headers=headers).text)
# 获取我们所需图片的所有超链接
lis=result.xpath('//main[@id="main"]//div[@class="post-info pos-r pd10 post-side"]/h2/a/@href')
# lis里面包含当前页所有套图的图片地址
这段代码主要是为了获取当前页所有套图的url地址然后存入lis中
for down_url in lis:
# 打开每个套图的地址
fina=etree.HTML(requests.get(down_url,headers=headers).text)
# 再提取每个套图地址里面所有图片的超链接,这也是我们所真正需要下载保存的图片
img_get=fina.xpath('//div[@id="content"]//div[@id="entry-content"]//p/img/@src')
# img_get里面包含了每个套图所有图片的超链接地址,接下来就是将它们一个个保存下来
这段就是打开某个详细的套图地址,并进行解析,然后再保存该套图所有图片的地址
for img_url in img_get:
total_num+=1
print(total_num)
try:
img=requests.get(img_url,headers=headers,timeout=2).content
except Exception as e:
print(e)
# 保存地址为E盘的img文件夹
path="E:\\img"
# 先检查是否已经存在img文件夹
if not os.path.exists(path):
os.mkdir(path)
# 对每张图片进行重命名并保存
img_name="E:\\img\\{}.jpg".format(total_num)
with open(img_name,'wb') as save:
save.write(img)
这段代码就是真正的开始爬取每张图片了,先通过requests获取每张图片的内容并以wb形式保存下来,再存储到E盘的img文件夹内,并通过taotal_num变量为每张图片进行重命名排序
这就是最终爬取的成果图
import requests
from lxml import etree
import os
def start(url):
headers={
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',
}
total_num=0
# 解析每页的页面
result=etree.HTML(requests.get(url,headers=headers).text)
# 获取我们所需图片的所有超链接
lis=result.xpath('//main[@id="main"]//div[@class="post-info pos-r pd10 post-side"]/h2/a/@href')
# lis里面包含当前页所有套图的图片地址
for down_url in lis:
# 打开每个套图的地址
fina=etree.HTML(requests.get(down_url,headers=headers).text)
# 再提取每个套图地址里面所有图片的超链接,这也是我们所真正需要下载保存的图片
img_get=fina.xpath('//div[@id="content"]//div[@id="entry-content"]//p/img/@src')
# img_get里面包含了每个套图所有图片的超链接地址,接下来就是将它们一个个保存下来
for img_url in img_get:
total_num+=1
print(total_num)
try:
img=requests.get(img_url,headers=headers,timeout=2).content
except Exception as e:
print(e)
# 保存地址为E盘的img文件夹
path="E:\\img"
# 先检查是否已经存在img文件夹
if not os.path.exists(path):
os.mkdir(path)
# 对每张图片进行重命名并保存
img_name="E:\\img\\{}.jpg".format(total_num)
with open(img_name,'wb') as save:
save.write(img)
if __name__ == '__main__':
url='https://www.xxxx.com'
#调用start方法开始爬取图片
start(url)
print('爬取结束')
这是程序的全部代码
写在最后
这是博主第一次尝试写博客,以上所有的内容与文字包括程序或多或少都有借鉴网上与书本中,并都是通过本人自己的见解进行编写,如有哪里不好,不正确的地方还请各位看官多多谅解,也欢迎各位大佬对萌新进行指正,谢谢每一位看到这里的看官!!!!