鱼C论坛

 找回密码
 立即注册
查看: 2576|回复: 5

我应该怎样把我抓取到的东西保存到本地

[复制链接]
发表于 2017-5-18 14:21:26 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. # -*- coding: utf-8 -*-
  2. import re
  3. import urllib.request
  4. import urllib
  5. import os
  6. from collections import deque




  7. #使用队列存放url
  8. queue = deque()
  9. #使用visited防止重复爬同一页面
  10. visited = set()

  11. url = 'http://www.qichongwang.com'  # 入口页面, 可以换成别的
  12. #入队最初的页面
  13. queue.append(url)
  14. cnt = 0

  15. while queue:
  16.   url = queue.popleft()  # 队首元素出队
  17.   visited |= {url}  # 标记为已访问

  18.   print('已经抓取: ' + str(cnt) + '   正在抓取 <---  ' + url)
  19.   cnt += 1

  20.   try:
  21.       #抓取页面
  22.       urlop = urllib.request.urlopen(url,timeout=10)
  23.   except Exception:
  24.       print("超时")
  25.       continue
  26.   #判断是否为html页面
  27.   if 'html' not in urlop.getheader('Content-Type'):
  28.     continue

  29.   # 避免程序异常中止, 用try..catch处理异常
  30.   try:
  31.    #转换为utf-8码
  32.     data = urlop.read().decode('utf-8')
  33.   except:
  34.     continue

  35.   # 正则表达式提取页面中所有队列, 并判断是否已经访问过, 然后加入待爬队列
  36.   linkre = re.compile("href=['"]([^"'>]*?)['"].*?")
  37.   for x in linkre.findall(data):##返回所有有匹配的列表
  38.     if 'http' in x and x not in visited:##判断是否为http协议链接,并判断是否抓取过
  39.       queue.append(x)

  40. f = open(r'E:\sitemap.txt', 'wb')
  41. f.write(url)
  42. f.close()
复制代码

大家帮忙开一下代码哪里有问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-5-18 14:49:58 | 显示全部楼层
你要保存什么呀?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-5-18 15:02:29 | 显示全部楼层
zxszx4 发表于 2017-5-18 14:49
你要保存什么呀?

我要保存我抓取过来的所有URL
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-5-18 15:42:10 | 显示全部楼层
不明白你程序的表达
如果是保存文件
  1. #一次性写入
  2. with open(文件路径,'w') as f:
  3.     f.write(你要写进去的东西)
  4. #增加写入
  5. with open(文件路径,'a') as f:
  6.     f.write(你要写进去的东西)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-5-18 15:47:32 | 显示全部楼层
刘英超 发表于 2017-5-18 15:02
我要保存我抓取过来的所有URL

我还是没太搞懂
首先你打开文件是二进制的,却要把字符串写进去,格式不对吧
其次你的url最开始赋值了,一直没变,写的还是一开始赋值的
最后你的队列是排队的,最后的值都取出来的你写什么?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-20 06:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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