www.xgmn.org这个写真网站的套图质量不错,内容丰富 ,不喜欢整个爬取,喜欢哪个爬哪个
[Python] 纯文本查看 复制代码 from fake_useragent import UserAgent
import requests,os
from bs4 import BeautifulSoup
from concurrent.futures import ThreadPoolExecutor
IMG_URLS=[]
#随机获取请求头
def get_headers(u):
ua=UserAgent()
return {'user-agent': ua.random,'referer': u}
#解析套图首页
def parse_page(url):
res=requests.get(url,get_headers(url))
res.encoding='GB2312'
html=BeautifulSoup(res.text,'lxml')
return html
#获取套图内写真的url
def get_img_url(url):
html=parse_page(url)
img_urls=[]
temp=html.select('div.img p img')
for i in temp:
img_urls.append('https://www.xgmn.org%s' % i['src'])
IMG_URLS.extend(img_urls )
return img_urls
#获取写真套图的名称
def get_name(html):
name=html.select('div.title')[0].get_text()
return name
#获取写真套图每一页的地址
def get_page_list(html):
page_list=[]
temp=html.select('div.page')[0]
for i in temp:
page_list.append('https://www.xgmn.org%s' % i['href'])
page_list.pop()
return page_list
#下载
def write(path,url):
name=url[url.rfind('/')+1:]
with open(path+name,'wb') as f:
f.write(requests.get(url,headers=get_headers(url)).content)
if __name__ == '__main__':
#需要爬学的写真套图地址
url='https://www.xgmn.org/Xgyw/Xgyw6684.html'
#要保存到本地路径
dir=r'U:\HDTV\PIC\www.xgmn.org'
#获取该写真套图的HTML
html=parse_page(url)
#获取写真套图的名称
name=get_name(html)
#把本地路径和写真套图的名称拼接成新的路径
path=r'%s\%s\\' % (dir,name)
print(path)
if not os.path.isdir(path):
os.makedirs(path)
page_list=get_page_list(html)
#打开本地的路径
os.startfile(path)
#创建一个线程池获取所有写真的url
t=ThreadPoolExecutor(10)
for u in page_list:
t.submit(get_img_url,u)
t.shutdown()
#另外创建一个线程池下载所有的写真
th = ThreadPoolExecutor(10)
for u in IMG_URLS:
th.submit(write,path,u)
th.shutdown()
print('=================下载完成') |