python爬虫源码:小白学习爬虫实例-爬取种子磁力站资源

  • A+
所属分类:Python合集
 这个python爬虫可以爬取下面这个磁力站的所有磁力搜索结果,自然就可以找到所有的合集,比如知名模特mila azul的磁力资源合集什么的,咳咳。
直接放代码:
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. # @Time    : 2018/4/24 0024 12:47
  4. # @Author  : konmin
  5. # @Site    : 
  6. # @File    : test.py
  7. # @Software: PyCharm
  8. '''
  9. 本爬虫爬取种子磁力站的链接并对结果整理进execel表
  10. https://m.zhongziso.com/list/mila%20azul/1
  11. https://m.zhongziso.com/list_ctime/mila+azul/2
  12. https://m.zhongziso.com/list_ctime/mila+azul/3
  13. https://m.zhongziso.com/list_ctime/%E6%B3%B7%E6%B3%BD%E8%90%9D%E6%8B%89/7
  14. '''
  15. import requests
  16. from bs4 import BeautifulSoup
  17. import xlwt
  18. import random
  19. import re
  20. import sys
  21. reload(sys)
  22. ua_list = [
  23.             "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1" ,
  24.             "Mozilla/5.0 (X11; CrOS i686 2268.111.0) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11",
  25.             "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1092.0 Safari/536.6",
  26.             "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1090.0 Safari/536.6",
  27.             "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/19.77.34.5 Safari/537.1",
  28.             "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.9 Safari/536.5",
  29.             "Mozilla/5.0 (Windows NT 6.0) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.36 Safari/536.5",
  30.             "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3",
  31.             "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3",
  32.             "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_0) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3"
  33. ]
  34. headers = {"user-agent":random.choice(ua_list)}
  35. times =[]
  36. names = []
  37. sizes = []
  38. margnets1 = []
  39. margnets2 = []
  40. def test(text):
  41.     req = requests.get('https://m.zhongziso.com/list_ctime/%s/' % text + '1', headers=headers)
  42.     if req.status_code==200:
  43.         soup = BeautifulSoup(req.content, 'lxml', from_encoding='utf-8')
  44.         final_sum = soup.find('a', text='尾页')['href']
  45.         final = re.search(r'/\d+', final_sum).group()
  46.         end_sum = int(final.strip('/'))
  47. #        print end_sum
  48.         return end_sum
  49.     else:
  50.         return 0
  51. def first_htm(num,text):
  52.     req = requests.get('https://m.zhongziso.com/list_ctime/%s/'%text + str(num),headers=headers)
  53.     soup = BeautifulSoup(req.content,'lxml',from_encoding='utf-8')
  54.     name = soup.find_all('a',class_="text-success")
  55.     margnet =  soup.find_all('a',class_="btn btn-success")
  56.     size = soup.find_all('dd',class_="text-time")
  57.     time = soup.find_all('dd',class_="text-size")
  58.     for a1 in margnet[::2]:
  59.         margnets1.append(a1)
  60.     for a2 in margnet[1::2]:
  61.         margnets2.append(a2)
  62.     for b in size:
  63.         sizes.append(b)
  64.     for c in time:
  65.         times.append(c)
  66.     for d in name:
  67.         names.append(d)
  68. def save_file(text):
  69.     xls = xlwt.Workbook()
  70.     sheet1 = xls.add_sheet('sheet1')
  71.     row0 = [u'名称',u'大小',u'时间',u'迅雷',u'磁力']
  72.     for i in range(0,5):
  73.         sheet1.write(0,i,row0[i])
  74.     t1 = t2 = t3 = t4 = t5 = 1
  75.     for a1 in margnets1:
  76.         sheet1.write(t1,4,a1['href'])
  77.         t1+=1
  78.     for a2 in margnets2:
  79.         sheet1.write(t2, 3, a2['href'])
  80.         t2 += 1
  81.     for b in sizes:
  82.         sheet1.write(t3,2,b.get_text())
  83.         t3+=1
  84.     for c in times:
  85.         sheet1.write(t4,1,c.get_text())
  86.         t4+=1
  87.     for d in names:
  88.         sheet1.write(t5,0,d.get_text())
  89.         t5+=1
  90.     xls.save(str(text).decode('utf-8').encode('gbk')+'_all_resource.xls')
  91. if __name__ == "__main__":
  92.     print sys.getdefaultencoding()
  93.     text = raw_input(u'你搜索的是?')
  94. #    print text
  95.     end_num = test(text)
  96.     if end_num>0:
  97.         print '共有'+str(end_num),'页,开始爬取'+ text +'的链接...\n'
  98.         for j in range(1,end_num+1):
  99.             print j
  100.             first_htm(j,text)
  101.         save_file(text)
  102.         print '存取完毕!可以尽情欣赏啦!'
  103.     else:
  104.         print '啊呀,失败了!'

以上,基本没有什么特殊的知识点,几个库及其使用方法在之前的爬虫实例中都有讲解,这次主要多了个xlwt库,还有一个是xlrd库,这两个库实现对execel的读写,基本如此,因为我只是爬取数据玩玩,目前不会使用到数据库,并且我也不会使用,用execel存取数据对目前小白式的爬虫足以应付了。

 

由于爬虫维护太频繁,上次发的“九妹图社”的爬虫因为网站改版(说不定就是因为一直被爬,站长受不了了),打包成的exe可执行程序已经无法使用,这次这个就不打包了,想直接使用的小白,嗯,很简单的,自己动手按着我这个写一个吧!

 

好了,如果你有什么疑问,欢迎留言,留下邮箱便可以收到回复。

HeyBy

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: