python 爬虫 图片

一个简单的pathon 爬取图片代码。

总结遇到的问题:

1.爬取网站代码遇到代码爬取不到该网站设置反扒

解决:修改 User-Agent 默认显示的是python

修改可以复制你访问网址的,如何找到往下看,复制那个即可

headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36'}

2.爬取到的网页源代码中文全部乱码,如图

 

设置一下爬取到的数据的编码即可

response.text.encode(response.encoding).decode('utf-8')

 

3.爬取为空

原因可能是在正则表达式解析网页那块,需要分析爬取的结构,完整的对比

 这里我爬取不到,原因是

多了空格,而爬取到的数据里面没有空格。注:匹配这里最好看爬取后的html,在里面找正则匹配的标签,因为在网页源代码看到的和爬取到的结构些许不同,爬取到的会把结构加一些空格,导致你匹配不到数据。

4.保存图片时报错

该问题原因是我爬取的图片路径该网站没有设置http导致python无法请求到有效地址,需要手动添加一下即可

#循环爬取的url 挨个添加一下就好了
url = 'http:'+url

import requests
import re
import os
import time

url = "https://www.woyaogexing.com/tupian/mingxing/2018/41351.html"
# 遇到反扒需要设置
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win32; x32) AppleWebKit/588.6 (KHTML, like Gecko) Chrome/15.0.4007.15 Safari/537.36'}
# 修改自己身份
response = requests.get(url,headers=headers)

#.encode(response.encoding).decode('utf-8') 中文乱码解决
html = response.text.encode(response.encoding).decode('utf-8')
print(html)
""" 解析网页"""
dir_name = re.findall('<div class="pifutitle"><h1>(.*?)</h1></div>',html)[0]# 文件名
print(dir_name)
if not os.path.exists(dir_name): #判断是否有当前文件夹 否则创建
    os.mkdir(dir_name)

urls = re.findall('<img class="lazy" src="(.*?)"/>',html) # 正则表达式解析网页
# <img class="lazy" src="//img2.woyaogexing.com/2018/07/02/c0ddb88553a24141a7b471cae28967d8!600x600.jpeg"/>

"""保存图片"""
for url in urls:
    time.sleep(1) #延迟一秒
    file_name = url.split('/')[-1]
    new_url = 'http:'+url
    response = requests.get(new_url,headers=headers)  # 请求地址必须http 没有就会报错
    with open(dir_name + '/' +file_name,'wb') as f:
        f.write(response.content)

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值