|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
#!/usr/bin/python3import
osimport
os.pathimport
urllib.requestimport
chardetimport
timeimport
refrom
multiprocessing.dummy import
Pool as ThreadPooldef
url_content_read(url): res
=
urllib.request.urlopen(url).read() return
res def
url_socket_list_pharse(socket_raw_info_data): p
=
re.compile(r'<td>(\d+\.\d+\.\d+\.\d+)</td><td>(\d+)</td>') socket_info_list
=
p.findall(socket_raw_info_data) socket_pharsed_info_list
=
[] for
s_info in
socket_info_list: socket_pharsed_info_list.append("%s:%s"%(s_info[0],s_info[1])) return
socket_pharsed_info_listif
__name__ ==
"__main__": urls
=
[] for
i in
range(1,42): urls.append("http://www.proxy.com.ru/list_%d.html"%(i)) start_time
=
time.time() _pool
=
ThreadPool(4) results
=
_pool.map(url_content_read,urls) _pool.close() _pool.join() print("time
spent: %f"%(time.time()
-
start_time)) p
=
re.compile(r'http://[\w|\d|-|\.]+[:\d+]*[/|\w|\d|\.|%|@|&|\*|\+|#|\?|\=|\-]+') #对获取的结果网页进行字符串的编码解码 socket_info_raw_data_list
=
[] for
res in
results: det_res
=
chardet.detect(res) #print(det_res) if
det_res['encoding']
==
'utf-8': socket_info_raw_data_list.append(res.decode('utf-8','ignore')) elif
det_res['encoding']
==
'GB2312': socket_info_raw_data_list.append(res.decode('GB2312','ignore')) else: socket_info_raw_data_list.append(res.decode('gbk','ignore')) #对结果进行进一步的解析 start_time
=
time.time() _pool
=
ThreadPool(40) results
=
_pool.map(url_socket_list_pharse,socket_info_raw_data_list) _pool.close() _pool.join() print("time
spent: %f"%(time.time()
-
start_time)) #最后对结果进行输出 fp
=
open(r'/home/mobilefzb/socket_list.txt','w') for
res in
results: for
si_res in
res: fp.write("%s\n"%(si_res)) fp.close() |
|
主要爬取“http://www.proxy.com.ru”这个网站的代理服务器列表,然后将其整理成为如截图所示的格式(开源中国)。

我的python版本为2.7 在编译过程中遇到如题报错。
查询资料:
python中,每个py文件被称之为模块,每个具有__init__.py文件的目录被称为包。只要模块或者包所在的目录在sys.path中,就可以使用import 模块或import 包来使用。
如果想使用非当前模块中的代码,需要使用Import。如果你要使用的模块(py文件)和当前模块在同一目录,只要import相应的文件名就好,比如在a.py中使用b.py:
import b
但是如果要import一个不同目录的文件(例如b.py)该怎么做呢?
首先需要使用sys.path.append方法将b.py所在目录加入到搜素目录中。然后进行import即可,例如
import sys
sys.path.append('c:\xxxx\b.py')
问题答案:
urllib.request及urllib.error
3.0版本后又urllib2模块拆分而来,导致3.0使用此模块程序到2.0+版本无法正常使用,具体怎么解决还没实现,探索中、、、
参考:
https://docs.python.org/2/library/urllib2.html
http://tieba.baidu.com/p/2265012496
本文介绍了一种使用Python爬取特定网站上的代理服务器列表的方法,并对其进行了格式化的处理。通过多线程加速网页内容抓取并解析,最终将结果保存为文本文件。
307

被折叠的 条评论
为什么被折叠?



