<pre><code>
import urllib.request
from bs4 import BeautifulSoup
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Maxthon/5.0.4.3000 Chrome/47.0.2526.73 Safari/537.36'}
x = 0
def imgs(url):
request_page = urllib.request.Request(url,headers = headers)
page = urllib.request.urlopen(request_page)
html = page.read()
soup_page = BeautifulSoup(html,"html5lib")
imgs = soup_page.find_all('img')
imgstr = ''
f = open(r'C:\Users\Administrator\Desktop\img\imgs.txt',mode = 'w')
for img in imgs:
link = img.get('src')
if not(link[:5] == "http:"):
continue
print(link)
global x
urllib.request.urlretrieve(link,'img%s.jpg'%x)
x += 1
imgstr += link +'\n'
f.write(imgstr)
f.close()
return 0
try :
url = 'http://www.archcollege.com/'
imgs(url)
except TypeError:
pass
</code></pre>
1段:导入URL和BS4库;
2段:声明基本数据,headers是从浏览器中Agent字段中复制的;x是下载到本地后图片的文件名;
3段:构建一个单独网页图片下载函数;先实例化一个request对象,python3中 urlopen函数在urllib.request.下,是request对象的方法,urlopen函数返回一个response对象,response对象有read方法,read方法返回一个HTML的流,有可能是比特流也可能是str流。
有了这个流就可以创建BeautifulSoup对象。
使用BeautifulSoup对象的find_all方法,返回某个标签的列表,然后遍历这个列表。
可以将遍历内容写进一个文件里,也可以打印出来观看,只要是为了进一步分析需要的URL。
4段:执行这个函数,现在网站有很多反爬虫方法,为了简便,只捕捉一种TypeError异常。