对编程来说还是个新手,尤其是Python。我一直在为Kickstarter页面做一个网络垃圾。我已经从一个页面上获得了每个项目的所有信息,但是我一直在做的方式相对混乱。我想让这个scraper获取第一个项目,获取数据,追加,然后转到下一个项目,但是它被设置为从页面抓取所有目标数据,并希望它在最后与正确的项目对齐。在
现在,我已经从每一个抓取了更多的数据,而不仅仅是简介和链接到每一个,但下面是一些我一直在做的示例代码。beauthoulsoup有点让人困惑,因为我相信它能将事物转换成不同的数据类型,这在我没有受过训练的人看来,很难将.find_next()类型的东西串在一起。Kickstarter特别将这些项目按每行4个项目进行组织。在
有什么想法可以帮我完成:查找第一个项目->刮除->追加数组->在下一个项目上重复?
pageGrab = BeautifulSoup(requests.get(url).content, "html.parser")
link_array = []
blurb_array = []
links = pageGrab.select('.project-title a')
blurb = pageGrab.select('.project-blurb')
for link in links:
rel_path = link.get('href')
path = urljoin(base_url, rel_path)
link_array.append(path)
for row in blurb:
blurb_array.append(row.string.strip())
从这里开始,我将这些数组传递到Pandas数据帧中,该数据帧将写入Excel文件。到目前为止,我为自己感到非常自豪,因为这是我的第一个有用的程序/脚本!在
我建议您选择每个项目的“卡片”,这些项目具有“项目”类:
select方法还返回一个“soup”,然后可以对其进行搜索。例如,要查找项目标题:
^{pr2}$它选择头中包含的带有类
project-title
的链接元素, contents属性获取实际文本(出于某种原因,在列表中)。有关这些方法的详细信息,请参见the docs。在例如,要获得第一个项目的名称,可以执行以下操作
所以,你可以迭代所有的项目卡片并收集你想要的信息。在
我不确定您这样做是否是为了学习一般的web抓取,但是如果您想创建一个合适的应用程序,我建议您使用JSON数据,这更容易操作。 只需将
.json
添加到页面URL的末尾,就可以从Kickstarter的页面获得:https://www.kickstarter.com/discover/advanced.json?category_id=16&woe_id=0&sort=newest&seed=2479798&page=1
请记住,他们将来可能会删除此项,并且没有多少站点以这种方式提供API
相关问题 更多 >
编程相关推荐