ZHXZHX 发表于 2020-10-1 15:55

十万多rss源爬虫


如题,最近喜欢上折腾rss,就差rss订阅源。最近新上架了一个应用,抓包接口,从里面爬取一些rss源。

没时间去学python,但是又想去尝试写,结果多线程写出来的比java慢很多,就放单线程代码上来吧。

感兴趣的也可以帮忙修改下放评论区(**随机user-agent+代{过}{滤}理ip**),不然十万多条数据,估计给封ip

接口从1到十万多,因为中间有些rss是失效的,被删除所以没数据。我是用count进行判断的,连续30次获取到的数据都为空即退出。

附上代码;
```
import requests
import json
import csv

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

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

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

    # 将响应内容转换为Json对象
    res_json = json.loads(text)
    if str(res_json['ok']) == 'True':
      count = 0
      # 从Json对象获取想要的内容
      temp = res_json['listInfo']
      if 'listId' in temp:
            id = temp['listId']
      else:
            id = ''
      if 'contentType' in temp:
            contentType = temp['contentType']
      else:
            contentType = ''
      if 'name' in temp:
            name = temp['name']
      else:
            name = ''
      if 'rssUrl' in temp:
            rssUrl = temp['rssUrl']
      else:
            rssUrl = ''
      if 'sourceUrl' in temp:
            sourceUrl = temp['sourceUrl']
      else:
            sourceUrl = ''
      # 生成行数据
      row.append(str(id))
      row.append(str(contentType))
      row.append(str(name))
      row.append(str(rssUrl))
      row.append(str(sourceUrl))

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

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


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

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

skyadmin 发表于 2020-10-1 19:02

爬虫大佬

yanyaneboy 发表于 2020-10-1 20:23

没有爬到什么东西。。。

wvwv 发表于 2020-10-1 21:10

有啥好的订阅吗?

ZHXZHX 发表于 2020-10-1 21:14

yanyaneboy 发表于 2020-10-1 20:23
没有爬到什么东西。。。

类型是公众号的是订阅地址是隐藏的,类型是rss的话就有订阅源地址。刚测试了一下,count=30还是太小了,中间估计是有订阅源删除了,还是能爬取到东西的

ZHXZHX 发表于 2020-10-1 21:16

wvwv 发表于 2020-10-1 21:10
有啥好的订阅吗?

寻找中。。。。。。。

深水夜藏 发表于 2020-10-2 19:33

有学习资源吗?我也想学

lsmzcy 发表于 2020-10-5 18:11


有学习资源吗?我也想学
页: [1]
查看完整版本: 十万多rss源爬虫