找回密码
  注册[Register]
查看: 822|回复: 7

十万多rss源爬虫

[复制链接]
发表于 2020-10-1 21:56 | 显示全部楼层 |阅读模式
禁止求评分、诱导评分、互刷评分、互刷悬赏值,违规者封号处理。
禁止发布推广、邀请码、邀请链接、二维码或者有利益相关的任何推广行为。
所有非原创软件请发布在【精品软件区】,发帖必须按照本版块版规格式发帖。

如题,最近喜欢上折腾rss,就差rss订阅源。最近新上架了一个应用,抓包接口,从里面爬取一些rss源。
没时间去学python,但是又想去尝试写,结果多线程写出来的比java慢很多,就放单线程代码上来吧。
感兴趣的也可以帮忙修改下放评论区(随机user-agent+代{过}{滤}理ip),不然十万多条数据,估计给封ip
接口从1到十万多,因为中间有些rss是失效的,被删除所以没数据。我是用count进行判断的,连续30次获取到的数据都为空即退出。
附上代码;
  1. import requests
  2. import json
  3. import csv

  4. rows = []
  5. num = 3000
  6. count = 0
  7. headers = {
  8.         'Host': 'api.qingmang.me',
  9.         'Connection': 'close',
  10.         'User-Agent': 'Mango 3.0.0 (iPhone 6s Plus; ios-iphone 13.3.1; zh_CN)'
  11.     }

  12. for n in range(0, 500):
  13.     url = 'http://api.qingmang.me/v2/pool.list.info?list=k'
  14.     num = num + 1
  15.     url = url + str(num)
  16.     row = []
  17.     # 打印本次请求地址
  18.     print(url)

  19.     # 发送请求,获取响应结果
  20.     response = requests.get(url=url, headers=headers, verify=False)
  21.     text = response.text

  22.     # 将响应内容转换为Json对象
  23.     res_json = json.loads(text)
  24.     if str(res_json['ok']) == 'True':
  25.         count = 0
  26.         # 从Json对象获取想要的内容
  27.         temp = res_json['listInfo']
  28.         if 'listId' in temp:
  29.             id = temp['listId']
  30.         else:
  31.             id = ''
  32.         if 'contentType' in temp:
  33.             contentType = temp['contentType']
  34.         else:
  35.             contentType = ''
  36.         if 'name' in temp:
  37.             name = temp['name']
  38.         else:
  39.             name = ''
  40.         if 'rssUrl' in temp:
  41.             rssUrl = temp['rssUrl']
  42.         else:
  43.             rssUrl = ''
  44.         if 'sourceUrl' in temp:
  45.             sourceUrl = temp['sourceUrl']
  46.         else:
  47.             sourceUrl = ''
  48.         # 生成行数据
  49.         row.append(str(id))
  50.         row.append(str(contentType))
  51.         row.append(str(name))
  52.         row.append(str(rssUrl))
  53.         row.append(str(sourceUrl))

  54.         # 保存行数据
  55.         rows.append(row)

  56.     else:
  57.         print("该节点没有rss")
  58.         print(count)
  59.         count = count + 1
  60.         # 由于接口部分rss源失效,因此判定连续30次没有获取数据即退出爬取
  61.         if count > 30:
  62.             print("已经到尽头了,最后id为:k" + str(num))
  63.             break

  64. # 生成Excel表头
  65. header = ['Id','类型','名称','rss订阅源地址','原始地址']

  66. # 将表头数据和爬虫数据导出到Excel文件
  67. with open('D:\\rss.csv', 'w', encoding='gb18030',newline='') as f:
  68.     f_csv = csv.writer(f)
  69.     f_csv.writerow(header)
  70.     f_csv.writerows(rows)
复制代码


如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2020-10-1 21:57 | 显示全部楼层
6666666666
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2020-10-1 22:04 | 显示全部楼层
谢谢大牛
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2020-10-1 22:54 | 显示全部楼层
谢谢分享
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2020-10-1 23:01 | 显示全部楼层
6666
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2020-10-1 23:26 | 显示全部楼层
感谢楼主分享
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2020-10-1 23:51 | 显示全部楼层
谢谢大佬
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2020-10-2 03:40 | 显示全部楼层
好的,非常感谢
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

RSS订阅|手机版|小黑屋|广告投放|大牛论坛

GMT+8, 2024-5-31 09:13 , Processed in 0.034445 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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