搜索
查看: 1046|回复: 1

爬取freebuf个人收藏所有文章并保存到本地python脚本

[复制链接]

1839

主题

2255

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
11913
发表于 2016-9-30 10:38:42 | 显示全部楼层 |阅读模式
小弟代码拙劣,轻喷~

//爬取的是http://www.freebuf.com/user/myfavorites这里freebuf个人中心收藏的文章,如果你收藏的比较多,按需修改第七行代码处的“i = range(11)”。由于windows下文件名不能出现特殊符号,所以如果有特殊符号,则保存的文件名为数字.html。
如果不小心把爬取下载的窗口关了也没事,可重新运行,会判断文件是否存在,只会下载没下载过的。
图片没有分类,全部下载同一个目录里的,全部下载完了,记得把<img src>中的图片路径改成相对路径。

运行如图:

  1. #coding = utf-8
  2. import re,sys
  3. import requests
  4. import os
  5. from bs4 import BeautifulSoup
  6. import urllib
  7. i = range(11)
  8. shuzi = 1
  9. for a in i:
  10.         url = "http://www.freebuf.com/user/myfavorites/page/%s" %a
  11.         headers = {"cookie":"zhelishicookie"}
  12.         get1 = requests.get(url,headers=headers)
  13.         regex = "\<a href=\'(.*?)\' title=\'(.*?)\'\>(.*?)\<\/a\>\<\/div\>"
  14.         key = re.findall(regex,get1.content)
  15.         try:
  16.                 for k in key:
  17.                         print get1.url
  18.                         print k[0]
  19.                         get2 = requests.get(k[0])
  20.                         print get2.url
  21.                         if os.path.exists(k[1].decode('utf-8') + '.html') ==False:
  22.                                 print 'meiyou'*50
  23.                                 bc = open(k[1].decode('utf-8') + '.html','w+')
  24.                                 bc.write(get2.content)
  25.                                 neirong2 = get2.content
  26.                                 soup = BeautifulSoup(neirong2,from_encoding='gbk')
  27.                                 img = soup.findAll('img')
  28.                                 print img
  29.                                 for m in img:
  30.                                         g = m.get('src')
  31.                                         print g
  32.                                         try:
  33.                                                 
  34.                                                 imgg = g.split('/')[-1]
  35.                                                 print imgg        
  36.                                                 print 'a'*20
  37.                                                 urllib.urlretrieve(g,imgg)
  38.                                         except:
  39.                                                 
  40.                                                 break

  41.         except:
  42.                 for k in key:
  43.                         print get1.url
  44.                         print k[0]
  45.                         get2 = requests.get(k[0])
  46.                         print get2.url
  47.                         if os.path.exists(str(shuzi) + '.html') ==False:
  48.                                 print 'meiyou'*50
  49.                                 bc = open(str(shuzi) + '.html','w+')
  50.                                 bc.write(get2.content)
  51.                                 shuzi+=1
  52.                                 print shuzi
  53.                                 neirong2 = get2.content
  54.                                 soup = BeautifulSoup(neirong2,from_encoding='gbk')
  55.                                 img = soup.findAll('img')
  56.                                 print img
  57.                                 for m in img:
  58.                                         g = m.get('src')
  59.                                         print g
  60.                                         try:
  61.                                                 
  62.                                                 imgg = g.split('/')[-1]
  63.                                                 print imgg        
  64.                                                 print 'a'*20
  65.                                                 urllib.urlretrieve(g,imgg)
  66.                                         except:
  67.                                        
  68.                                                 break

复制代码

github地址https://github.com/Jumbo-WJB/spi ... reebuf_favorites.py

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?Join BUC

x
过段时间可能会取消签到功能了

4

主题

211

帖子

3200

积分

我是黑客

Rank: 3Rank: 3

积分
3200
发表于 2016-10-1 10:16:11 | 显示全部楼层
freebuf个人收藏所有文章
该会员没有填写今日想说内容.
您需要登录后才可以回帖 登录 | Join BUC

本版积分规则

Powered by Discuz!

© 2012-2015 Baiker Union of China.

快速回复 返回顶部 返回列表