马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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) ## 为了检查是否执行
结果出现的问题是,凡是地址里面有中文字符的,就不行
凡是英文字符的就能成功抓取
这个地址里面有汉字的问题怎么解决? |