组织我的美丽小组4网页抓取

2024-05-23 23:22:53 发布

您现在位置:Python中文网/ 问答频道 /正文

对编程来说还是个新手,尤其是Python。我一直在为Kickstarter页面做一个网络垃圾。我已经从一个页面上获得了每个项目的所有信息,但是我一直在做的方式相对混乱。我想让这个scraper获取第一个项目,获取数据,追加,然后转到下一个项目,但是它被设置为从页面抓取所有目标数据,并希望它在最后与正确的项目对齐。在

(任何好奇者的链接:https://www.kickstarter.com/discover/advanced?category_id=16&woe_id=0&sort=newest&seed=2479798&page=1

现在,我已经从每一个抓取了更多的数据,而不仅仅是简介和链接到每一个,但下面是一些我一直在做的示例代码。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文件。到目前为止,我为自己感到非常自豪,因为这是我的第一个有用的程序/脚本!在


Tags: 数据path项目idurlget链接link
1条回答
网友
1楼 · 发布于 2024-05-23 23:22:53

我建议您选择每个项目的“卡片”,这些项目具有“项目”类:

pageGrab.select( '.project' )

select方法还返回一个“soup”,然后可以对其进行搜索。例如,要查找项目标题:

^{pr2}$

它选择头中包含的带有类project-title的链接元素, contents属性获取实际文本(出于某种原因,在列表中)。有关这些方法的详细信息,请参见the docs。在

例如,要获得第一个项目的名称,可以执行以下操作

pageGrab.select( '.project' )[0].select_one('.project-title > a' ).contents[0]

所以,你可以迭代所有的项目卡片并收集你想要的信息。在

我不确定您这样做是否是为了学习一般的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

相关问题 更多 >