小白爬写真套图
www.xgmn.org这个写真网站的套图质量不错,内容丰富 ,不喜欢整个爬取,喜欢哪个爬哪个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').get_text()
return name
#获取写真套图每一页的地址
def get_page_list(html):
page_list=[]
temp=html.select('div.page')
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
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('=================下载完成') lonelycoder 发表于 2020-5-13 18:14
之前的有点问题,最新的版本。下载:https://zhizhi007.lanzouj.com/ickmzih 密码:6666
测试了下新版本,用python test.py执行报错,一堆错误码,好像没反应,摘一段:
C:\Users\LENOVO>python test.py
Traceback (most recent call last):
File "C:\Users\LENOVO\AppData\Local\Programs\Python\Python39\lib\site-packages\urllib3\connection.py", line 159, in _new_conn
conn = connection.create_connection(
File "C:\Users\LENOVO\AppData\Local\Programs\Python\Python39\lib\site-packages\urllib3\util\connection.py", line 84, in create_connection
raise err
File "C:\Users\LENOVO\AppData\Local\Programs\Python\Python39\lib\site-packages\urllib3\util\connection.py", line 74, in create_connection
sock.connect(sa)
TimeoutError: 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\LENOVO\AppData\Local\Programs\Python\Python39\lib\site-packages\urllib3\connectionpool.py", line 670, in urlopen 这个不是软件的 代码 怎么使用 围观学习一波 学习了,感谢分享 图确实有质量啊{:1_899:}{:1_921:} 不懂,飞机不会驾驶 什么东西看不懂...:wwqwq 学习了,感谢分享
打包一下呗?{:301_997:}