数据地址
基金会列表url:https://www.charitywatch.org/top-rated-charities
第一家基金会url:https://www.charitywatch.org/ratings-and-metrics/naacp-legal-defense-and-educational-fund/18
该篇文章是跟着视频教程边学边做的,所有代码都可以运行得通,只不过后面for循环的地方太慢了。
爬虫准备
HTML内容该网页的HTML信息都存储到了soup变量中,下面解释一下HTML里的一些内容:
比如说,“<td><a href="ratings-and-metrics/national-urban-league-national-office/19">National Urban League(National Office)</a></td>”
1. 其中‘href’ 是标签‘a’ 的属性,参数‘href’ 给出的是与将要跳转的网页地址的相关信息,也就是该家基金会的详细信息网页,在“ratings-and-metrics/national-urban-league-national-office/19”前面加上“https://www.charitywatch.org/”。
2.<a ***>National Urban League(National Office)</a> 这个段落包含的是该基金会的名称,也是重要信息。
爬虫思路
1.先通过基金会列表页面,取一家基金会为样例,爬取其详细网页信息与该基金会名称
2.根据获取的基金会详细信息网页地址,进入这个网页,抓取需要的具体expenses信息
从基金会列表页面搜集详细信息页资料:
我们看到,HTML对应的基金会列表代码,是在一个<div class="small-12 medium-8 column" id="results">的结构中,div是这个结构的标签,class, id是它的属性。
那么该怎样定位呢?
我们可以沿着层次树桩结构,比如head->body->div->.,也可以根据标签的一些特性,直接定位,比如div标签中的参数id内容是results,这一页只有一个id='results',的标签,那么参数id就可以直接定位了。
beautifulsoup中 find_all既可以直接定位标签(find_all(div)),也可以搜索满足参数条件的内容来定位比如,id = 'results’,这里的id参数内容是results。
或者采用下面这个方法取出所有的a标签:
通过拼接,获取某一家基金会的链接地址
爬取该基金会详情页的信息:
找到我们要定位的信息位置:
代码部分将基金会名车和花费做成dict赋值给results:数据一直在爬,这里只显示了7个
将结果results保存成CSV格式:
整个爬虫就完成了!
网友评论