|
发表于 2020-4-5 13:49:46
|
显示全部楼层
汇入要求
从bs4导入BeautifulSoup
从时间导入睡眠
导入操作系统
url ='https://www.vmgirls.com/wp-admin/admin-ajax.php'
标头= {'accept':'text / html,* / *; q = 0.01',
'accept-encoding':'gzip,deflate',
'accept-language':'zh-CN,zh; q = 0.9,en-US; q = 0.8,en; q = 0.7',
'content-length':'69',
'content-type':'应用程序/ x-www-form-urlencoded; charset = UTF-8',
'cookie':'__cfduid = d6ba47dd7cde19a4b487968361af72a071583116360; _ga = GA1.2.2082967947.1583116365; _gid = GA1.2.1038230085.1585386668; Hm_lvt_a5eba7a40c339f057e1c5b5ac4ab4cc9 = 1584192187,1584198393,1584276577,1585386669; Hm_lpvt_a5eba7a40c339f057e1c5b5ac4ab4cc9 = 1585386792',
'origin':'https://www.vmgirls.com',
'referer':'https://www.vmgirls.com/pure',
'sec-fetch-dest':'empty',
'sec-fetch-mode':'cors',
'sec-fetch-site':'same-origin',
'用户代理':'Mozilla / 5.0(Windows NT 10.0; Win64; x64)AppleWebKit / 537.36(KHTML,如Gecko)Chrome / 80.0.3987.149 Safari / 537.36',
'x-requested-with':'XMLHttpRequest'}
#为了保险就全部加上了“”“获取所有页面的链接”“”名称列表= []#标签页名称链接列表= []#链接
def get_linkdata():
pages = 2#第一页链接存放方式不一样,为了省事从第二行开始
select = int(input('(请输入要爬取的页数:(由于为个人网站,速度可能较慢,建议爬取页数小于10)')))
而页面<=选择+ 1:
数据= {
'append':'list-archive',
'paged':str(pages),
'action':'ajax_load_posts',
'查询':'18',
'page':'cat'
} #data中的paged决定了请求到的页数
“”“把标签页链接存储到列表中”“”
响应= request.post(URL,headers =标头,数据=数据)
html = response.text.encode()。decode()
汤= BeautifulSoup(html,'lxml')
aList = soup.find_all('a',attrs = {“ class”:“ list-title text-md h-2x”})#包含了页面链接和页面名称
对于aList中的a:
名称= a.strings
linklist.append(a [“ href”])#存入链接
名称中的名称:
namelist.append(name)#存入名称
页+ = 1
print('标签页链接已获取完成\ n开始下载图片')
get_photodata()
“”“解析图片所在页面”“”
def get_photodata():
标头= {
'用户代理':'Mozilla / 5.0(Windows NT 10.0; Win64; x64)AppleWebKit / 537.36(KHTML,如Gecko)Chrome / 80.0.3987.149 Safari / 537.36'}
用于范围内的计数(len(linklist)):
url =链接列表[count]
名称=名称列表[计数]
“”“创建文件夹”“”
如果不是os.path.exists(name):#判断指定文件夹是否存在
os.mkdir(名称)
响应= request.get(URL = url,headers =标头)
照片数据= response.text
汤= BeautifulSoup(photodata,'lxml')
链接= soup.find_all('img',attrs = {“ data-nclazyload”:“ true”})
photoc = 1#为了省事就把图片命名为数字了
对于链接中的链接:
photourl = link [“ data-src”]
如果photourl中为“静态”:#过滤掉一条错误链接
响应= request.get(URL = photourl,headers =标头)
sleep(1)#毕竟是个人网站,爬慢点,想要快速下载可删除此行或者数值调小
“”“保存图片”“”
使用open(name +'/'+ str(photoc)+'。jpg','wb')作为f:
f.write(response.content)
print('第',photoc,'张已下载')
photoc + = 1
如果__name__ =='__main__':
get_linkdata()
|
|