斗図表情包爬虫類(マルチスレッドベース)
13624 ワード
今日はマルチスレッドの爬虫類について書きますが、今回は闘図サイトの表情パックを取りました.
一.考え方:
1.ウェブサイトのページをめくるリンクに対して分析を行って、リンクを発見します:“http://www.doutula.com/article/list/?page=3」というように、数字「3」を変更するだけでアクセスしたいページインタフェースにアクセスできます.
2.フェイスパックフォルダを保存するフォルダを作成します.
3.分析によって各表情パケットのリンクを取得し、それを1つの関数にカプセル化し、関数は最終的に1つのWebページのすべての表情パケットのリンクを含むリストを返します.
4.単一の表情パケットリンクにアクセスし、各ピクチャのリンクを取得し、ピクチャをダウンロードし、ウェブページtitleというフォルダに保存し、このコードを1つの関数にカプセル化する.
5.3と4で作成した関数をカプセル化する関数を作成します.
6.threading.Threadを継承するサブクラスを作成します.
7.スレッドのリストを作成し、スレッドを作成し、スレッドをアクティブにします.
二.コード:
読んでくれてありがとう.
転載先:https://www.cnblogs.com/sniper-huohuohuo/p/8872439.html
一.考え方:
1.ウェブサイトのページをめくるリンクに対して分析を行って、リンクを発見します:“http://www.doutula.com/article/list/?page=3」というように、数字「3」を変更するだけでアクセスしたいページインタフェースにアクセスできます.
2.フェイスパックフォルダを保存するフォルダを作成します.
3.分析によって各表情パケットのリンクを取得し、それを1つの関数にカプセル化し、関数は最終的に1つのWebページのすべての表情パケットのリンクを含むリストを返します.
4.単一の表情パケットリンクにアクセスし、各ピクチャのリンクを取得し、ピクチャをダウンロードし、ウェブページtitleというフォルダに保存し、このコードを1つの関数にカプセル化する.
5.3と4で作成した関数をカプセル化する関数を作成します.
6.threading.Threadを継承するサブクラスを作成します.
7.スレッドのリストを作成し、スレッドを作成し、スレッドをアクティブにします.
二.コード:
1 #!/ur/bin/nv python3
2 #*- coding: utf-8 -*-
3
4 #
5 import requests
6 import os
7 import threading
8 from bs4 import BeautifulSoup
9 import time
10
11 # , , 。
12 #
13 class New_thread(threading.Thread):
14 def __init__(self,han_name,han_can):
15 super().__init__()
16 self.han_name = han_name
17 self.han_can = han_can
18 def run(self):
19 self.han_name(*self.han_can)
20 #
21 def dan_url_list(url,num):
22 headers = {'user-agent':'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.162 Safari/537.36'}
23 url_2 = url + str(num)
24 html = requests.get(url_2,headers=headers,timeout=30)
25 html.encoding = html.apparent_encoding
26 soup = BeautifulSoup(html.text,'html.parser')
27 url_lists = []
28 a= soup.find_all(name='a',attrs={'class':'list-group-item random_list'})
29 for x in a:
30 url_lists.append(x['href'])
31 return url_lists
32
33 # , url 。
34 def img_url(url):
35 headers = {
36 'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.162 Safari/537.36'}
37 html = requests.get(url,headers=headers,timeout=30)
38 html.encoding = html.apparent_encoding
39 soup = BeautifulSoup(html.text,'html.parser')
40 title = soup.find('title').text.split(' - ')[0]
41 print(title)
42 try:
43 os.mkdir('/home/admin/ / /%s' % title)
44 except:
45 pass
46 list_1 = []
47 s = soup.find_all(name='div',attrs={'class':"artile_des"})
48 for x in s:
49 try:
50 b = x.find('img')['src']
51 list_1.append(b)
52 except:
53 pass
54 for x in range(len(list_1)):
55 c = requests.get(list_1[x]).content
56 with open('/home/admin/ / /%s/%s.jpg' % (title,x),'wb') as www:
57 www.write(c)
58
59 # , img_url , 。
60 def down_all(url,num):
61 for x in dan_url_list(url,num):
62 img_url(x)
63 # 。
64 def main(page_num):
65 print('...........Start:%s...............' % time.ctime())
66 thr_list = []
67 url = 'http://www.doutula.com/article/list/?page='
68 for x in range(1,page_num+1):
69 t = New_thread(down_all,(url,x))
70 thr_list.append(t)
71 #
72 for x in thr_list:
73 x.start()
74 for x in thr_list:
75 x.join()
76 print('.........All Done: %s..............' % time.ctime())
77
78 if __name__ == '__main__':
79 a = input(' ?')
80 main(int(a))
81
82
読んでくれてありがとう.
転載先:https://www.cnblogs.com/sniper-huohuohuo/p/8872439.html