|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 cc9200 于 2017-1-13 14:29 编辑
- import urllib.request
- import urllib
- from bs4 import BeautifulSoup
- import os
- def url_open(url):
-
- req = urllib.request.Request(url)
-
- req.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 5.1; rv:43.0) Gecko/20100101 Firefox/43.0')
-
-
- response = urllib.request.urlopen(req)
- html = response.read().decode('utf-8') #有可能是 其他编码方式,如果乱码请修改这里
- soup=BeautifulSoup(html,'lxml')
- return soup
-
- url=input('请输入地址:')
- dir1=input('请输入存储路径:')
- soup=url_open(url)
- print(soup.title.string)
- os.mkdir(dir1+'/'+soup.title.string)
- dir1=dir1+'/'+soup.title.string
- imglist=soup.find_all('img')
- lenth = len(imglist) #计算集合的个数
- for i in range(lenth): ##抓取同一页面下的多张图片
- jpgurl=imglist[i].attrs['src']
- print(jpgurl)
- urllib.request.urlretrieve(jpgurl, dir1+'/'+jpgurl)
- #抓取img中属性为src的信息,例如<img src="123456" xxxxxxxxxxxxxxxx,则输出为123456
- print(jpgurl) ## 为了检查是否执
复制代码
运行如下
>>>
RESTART: C:\Users\Administrator\AppData\Local\Programs\Python\Python36-32\jpgload.py
请输入地址:http://www.wmpic.me/82057
请输入存储路径:E:
花卉植物小清新图片手机壁纸_唯美图片
http://p2.wmpic.me/article/2017/01/12/1484209927_PwARbvmU.jpg
Traceback (most recent call last):
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36-32\jpgload.py", line 32, in <module>
urllib.request.urlretrieve(jpgurl, dir1+'/'+jpgurl)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36-32\lib\urllib\request.py", line 258, in urlretrieve
tfp = open(filename, 'wb')
OSError: [Errno 22] Invalid argument: 'E:/花卉植物小清新图片手机壁纸_唯美图片/http://p2.wmpic.me/article/2017/01/12/1484209927_PwARbvmU.jpg'
>>>
这个错误到底什么意思?
=======================================================================
后来把关键代码改了下
- url=input('请输入地址:')
- dir1=input('请输入存储路径:')
- soup=url_open(url)
- print(soup.title.string)
- os.mkdir(dir1+'/'+soup.title.string)
- dir1=dir1+'/'+soup.title.string
- imglist=soup.find_all('img')
- lenth = len(imglist) #计算集合的个数
- for i in range(lenth): ##抓取同一页面下的多张图片
- jpgurl=imglist[i].attrs['src'] #抓取img中属性为src的信息,例如<img src="123456" xxxxxxxxxxxxxxxx,则输出为123456
- list1=jpgurl.split('/')
- jpgname=list1[-1]
- print(jpgurl)
- try:
- urllib.request.urlretrieve(jpgurl, dir1+'/'+jpgname) ##图片地址里面不能有汉字
-
- except Exception as e:
- print (Exception,":",e)
- print(jpgurl) ## 为了检查是否执行
复制代码
结果出现的问题是,凡是地址里面有中文字符的,就不行
凡是英文字符的就能成功抓取
这个地址里面有汉字的问题怎么解决? |
|