采集Stack Overflow其实非常简单,网上也有现成的代码,关键是要实现大批量的数据抓取比较麻烦。
一、返回代码429
今天在抓取时就碰到了这个代码,总共才抓了300多条记录,就碰到这个代码。
2、429 Too Many Requests (太多请求)
当你需要限制客户端请求某个服务的数量,也就是限制请求速度时,该状态码就会非常有用。在此之前,有一些类似的状态码。例如“509 Bandwidth Limit Exceeded”。
应该是我用了2个线程的原因。
二、解析数据
后来才发现根本不用采集,stack官方提供数据下载:https://archive.org/details/stackexchange
下载下来的文件是xml,需要解析一下。中间又发现了一个问题,官方提供的xml文件中许多问题没有标题,好吧,先将就用着吧。
import xml.etree.ElementTree as ET
def parserXml(file):
n = 1
i = 1
for event, element in ET.iterparse(file):
if element.tag == 'row':
# print((element.attrib)
title = element.attrib.get("Title")
if title:
print(element.attrib.get("Title"))
i+=1
print("-"*80)
n+=1
element.clear()
print("共有{}文章,其中有标题的有{}篇......".format(n,i))
parserXml("Posts1.xml")
小提示:
一个主题同时提供两个文件,两个文件的内容是完全不一样的。
3dprinting.meta.stackexchange.com.7z (View Contents) 01-Mar-2021 11:09 630.7K
3dprinting.stackexchange.com.7z (View Contents) 01-Mar-2021 11:10 12.6M