123666666 发表于 2020-12-28 09:41:28

理解不了爬虫代码,老是报错

import requests,time,parsel
headers={
    89'user-agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',
    'Referer': 'https://www.mzitu.com/mm/'
}

def Download_tu(tu_download,tu_name):#下载一张图片
    tu_pian=requests.get(tu_download,headers=headers)
    s='C:\用户\ccj\Desktop\图片-1'#设置储存路径
    with open(s+'\\'+tu_name+'.jpg','wb') as f:
      f.write(tu_pian.content)#写入图片

def Download_tuji(url,n):#下载一个图集
    response=requests.get(url,headers=headers)#发送网络请求
    nei_rong=parsel.Selector(response.text)#解析网页
    ye_shu=int(nei_rong.xpath('//div/a/span/text()').get())#获取图片最大页数
    for i in range(ye_shu):
      time.sleep(2)#设置下载延时
      tu_download=nei_rong.xpath('//p/a/img/@src').get()#获取图片下载地址
      huan_ye=nei_rong.xpath('//p/a/@href').get()#获取换页地址
      tu_name=nei_rong.xpath('//div/h2/text()').get()#提取图片名字
      print(f'正在下载第{i+1}张:{tu_name},此系列共有张{ye_shu}图片,总共下载了{n}张')
      #print(tu_download,huan_ye,tu_name)
      Download_tu(tu_download,tu_name)
      url=huan_ye#换一页
      response=requests.get(url,headers=headers)#换请求新页面
      nei_rong=parsel.Selector(response.text)
      n+=1#计数
    return n


def Download_yiye(url):#下载整页图
    response=requests.get(url,headers=headers)
    nei_rong=parsel.Selector(response.text)
    urls=nei_rong.xpath('//*[@id="pins"]/li/a/@href').getall()
    n=1#获取当前页面不同类型图集的链接
    for url in urls:
      print(url)#打印要下载的图集地址
      n=Download_tuji(url,n)#下载图片

url='https://www.mzitu.com/xinggan/'#要爬取的网址
Download_yiye(url)




报错

=================== RESTART: C:\Users\ccj\Desktop\爬虫下载妹子图.py ===================
https://www.mzitu.com/223010
正在下载第1张:极品眼镜娘王雨纯前凸后翘曲线优美 三点半露清晰可见,此系列共有张79图片,总共下载了1张
Traceback (most recent call last):
File "C:\Users\ccj\Desktop\爬虫下载妹子图.py", line 42, in <module>
    Download_yiye(url)
File "C:\Users\ccj\Desktop\爬虫下载妹子图.py", line 39, in Download_yiye
    n=Download_tuji(url,n)#下载图片
File "C:\Users\ccj\Desktop\爬虫下载妹子图.py", line 24, in Download_tuji
    Download_tu(tu_download,tu_name)
File "C:\Users\ccj\Desktop\爬虫下载妹子图.py", line 10, in Download_tu
    with open(s+'\\'+tu_name+'.jpg',) as f:
FileNotFoundError: No such file or directory: 'C:\\用户\\ccj\\Desktop\\图片-1\\极品眼镜娘王雨纯前凸后翘曲线优美 三点半露清晰可见.jpg'

suchocolate 发表于 2020-12-28 14:11:41

本帖最后由 suchocolate 于 2020-12-28 14:13 编辑

再核对一下代码吧。
代码是对的,以wb方式打开文件。
但从报错信息看是以默认r方式打开文件,因为不存在所以报错。

Daniel_Zhang 发表于 2020-12-28 16:11:43

本帖最后由 Daniel_Zhang 于 2020-12-28 16:14 编辑

首先,跑了一下楼主的代码,问题在哪里呢?为啥能跑通呢?



为啥我测试了,可以下载?



发现一个小 bug,楼主贴的代码里, header 里面的 user-agent 前面,似乎多了一个数字 89?

如果答案对您有帮助,请设置最佳答案。码字不易,谢谢!

2269099035 发表于 2020-12-29 13:53:33

你应该是没创建那个目录吧'C:\\用户\\ccj\\Desktop\\图片-1'。最好加个判断,让它自己创建

Daniel_Zhang 发表于 2020-12-29 16:00:02

这个看着,突然发现有问题啊,你这压根就没有改存储路径

存储路径得 os.chdir(PATH)

PATH 就是你文件需要储存的路径

楼主的代码里面那个路径 s,是打开一个名为 s + ... + '.jpg' 为名的文件,例如 'C:\用户\ccj\Desktop\图片-1图片名.jpg'
页: [1]
查看完整版本: 理解不了爬虫代码,老是报错