本来想爬取 淘宝网站 的图片 的 但是后面发现 是异步加载 就是随便找了一个 图片网张爬取
from urllib import request
import re
import random
def url(i):
url='https://sc.chinaz.com/tupian/shanshuifengjing_'+str(i)+'.html'
return url
#这是构建 url 可以爬取 多个页数的数据
agents=["Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36",
"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:30.0) Gecko/20100101 Firefox/30.0",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.75.14 (KHTML, like Gecko) Version/7.0.3 Safari/537.75.14",
"Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Win64; x64; Trident/6.0)",
"Mozilla/5.0 (Linux; U; Android 4.1; en-us; GT-N7100 Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30"
]
def ua():
a=random.choice(agents) #随机选取一个agents列表中的一个元素
headers={"User-Agent":a}
return headers
#这是随机选取一个用户代理池中的一个来进行爬取
#用户代理池 可能可以防止 通过同一个use_agent 多次爬取一个网站 的弊端吧
for i in range(2,4):
rep=request.Request(url(i),headers=ua())
resp=request.urlopen(rep)
text=resp.read().decode('utf-8')
pat='<img src2="//(.*?)"'
txt=re.compile(pat,re.S).findall(text)
for j in range(0,len(txt)):
link="http://"+txt[j]
localfile='F:\\一个项目\\一个项目\\图片爬取\\'+'第'+str(i)+'页'+'第'+str(j)+'张'+'.jpg'
request.urlretrieve(link,filename=localfile)
print('成功爬取第'+str(i)+'页'+'第'+str(j)+'张')
print('------')
还是小白 写得有些简陋了,欢迎各位大佬指导。