网站建设合理性,网站建设公司选哪家,广东网站建设公,租房合同范本下载word随便说点什么 因为在学python#xff0c;所有自然而然的就掉进了爬虫这个坑里#xff0c;好吧#xff0c;主要是因为我觉得爬虫比较酷#xff0c;才入坑的。 想想看#xff0c;你可以批量自动的采集互联网上海量的资料数据#xff0c;是多么令人激动啊#xff01; 所以我…随便说点什么 因为在学python所有自然而然的就掉进了爬虫这个坑里好吧主要是因为我觉得爬虫比较酷才入坑的。 想想看你可以批量自动的采集互联网上海量的资料数据是多么令人激动啊 所以我就被这块大蛋糕吸引过来了 :) 想学爬虫自然要去找学习资料了不过网上有很多我找了不少个人觉得崔庆才的爬虫教程写得不错。起码对我来说入门是够了。 感兴趣的朋友可以点进链接看看Python爬虫学习系列教程 这位兄台博客做得也很好 掌握了基本的爬虫知识主要是urllib,urlib2,re 这些库以及Request(),urlopen()的基本用法之后我就开始寻找爬取目标。 正好女朋友的哥哥让她帮忙下载小说找我推荐几本我一时也不知道他哥喜欢什么类型的心想干脆找个小说网批量下载一些小说。 于是说干就干用了一个中午时间写了一个粗糙的爬虫脚本启动发现可以运行让脚本在这儿跑着我回去躺在床上呼呼大睡。 起来之后发现脚本遇到错误停掉了于是debug干掉bug之后跑起来陆续又发现几个错误于是干脆在一些容易出错的地方例如urlopen()请求服务器的地方本地write()写入的地方是的这也会有超时错误加入了try-except捕获错误进行处理另外加入了socket.timeout网络超时限制修修补补之后总算可以顺畅的运行。 如此运行了两天爬虫脚本把这个小说网上的几乎所有小说都下载到了本地一共27000本小说一共40G。 自此大功告成打包发了过去。另外说一句百度云真坑每次上传数量有限制分享给朋友文件数量有限制分享的文件夹大小也有限制害的我还得整成压缩版才能分享。 下载界面 下面附上代码 1 #codingutf-82 import urllib3 import urllib24 import re5 import os6 7 webroot http://www.xuanshu.com8 9 for page in range(20,220):
10 print 正在下载第str(page)页小说
11
12 url http://www.xuanshu.com/soft/sort02/index_str(page).html
13 headers {User-Agent:Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 }
14 try:
15 request urllib2.Request(url,headersheaders)
16 response urllib2.urlopen(request,timeout180)
17 #print response.read()
18 except urllib2.URLError, e:
19 if hasattr(e,code):
20 print e.code
21 if hasattr(e,reason):
22 print e.reason
23
24 html response.read().decode(utf-8)
25 #print html
26 pattern re.compile(uli.*?div classs.*?target_blank(.*?)/abr /大小(.*?)br.*?/embr更新(.*?)/div.*?a href(.*?)img.*?(.*?)/a.*?div classu(.*?)/div,re.S)
27 items re.findall(pattern,html)
28 #print items
29
30 for item in items:
31 try:
32 book_auther item[0].encode(gbk)
33 book_size item[1].encode(gbk)
34 book_updatetime item[2].encode(gbk)
35 book_link item[3].encode(gbk)
36 book_name item[4].encode(gbk)
37 book_note item[5].encode(gbk)
38
39 book_full_link webroot book_link # 构建书的绝对地址
40
41 #请求地址
42 try:
43 request urllib2.Request(book_full_link,headersheaders)
44 response urllib2.urlopen(request,timeout180)
45 except urllib2.URLError, e:
46 if hasattr(e,code):
47 print e.code
48 if hasattr(e,reason):
49 print e.reason
50 html response.read().decode(utf-8)
51 #print html
52 pattern re.compile(a classdownButton.*?a classdownButton href\(.*?)\.*?Txt.*?/a,re.S)
53 down_link re.findall(pattern,html)
54 print book_name
55 print down_link
56
57 # down txt
58 try:
59 request urllib2.Request(down_link[0].encode(utf-8),headersheaders)
60 response urllib2.urlopen(request,timeout180)
61 except urllib2.URLError, e:
62 if hasattr(e,code):
63 print e.code
64 if hasattr(e,reason):
65 print e.reason
66 try:
67 fp open(book_name.txt,w)
68 except IOError,e:
69 pattern re.compile(strong.*?(.*?).*?/strong,re.S)
70 book_name re.findall(pattern,book_name)
71 fp open(book_name[0].txt,w)
72 print start download
73 fp.write(response.read())
74 print down finish\n
75 fp.close()
76 except Exception,e:
77 print 该条目解析出现错误忽略
78 print e
79 print
80 fp open(error.log,a)
81 fp.write(page:str(page)\n)
82 fp.write(item[4].encode(gbk))
83 #fp.write(e)
84 fp.write(\nThere is an error in parsing process.\n\n)
85 fp.close()
86
87 注意 该脚本只定向抓取“选书网”小说站“玄幻奇幻”分类下的小说。供网友们参考可自行修改。 写得比较粗糙勿喷…… Freecode# : www.cnblogs.com/yym2013