采集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