mayixb 发表于 2020-5-10 11:26

小白爬写真套图

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('=================下载完成')

王星星 发表于 2020-5-10 11:59

shkwp 发表于 2020-11-14 11:31

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

honghai0119 发表于 2020-5-10 11:32

这个不是软件的 代码 怎么使用

vagrantear 发表于 2020-5-10 11:38

围观学习一波

hmily65 发表于 2020-5-10 11:43

学习了,感谢分享

LZDC 发表于 2020-5-10 11:44

图确实有质量啊{:1_899:}{:1_921:}

lcylcylcy 发表于 2020-5-10 11:48

不懂,飞机不会驾驶

lsweilin 发表于 2020-5-10 11:49

什么东西看不懂...:wwqwq

523067000 发表于 2020-5-10 11:53

学习了,感谢分享

风冯讽凤 发表于 2020-5-10 11:53

打包一下呗?{:301_997:}
页: [1] 2 3 4
查看完整版本: 小白爬写真套图