我必须从一个网站的5页中提取信息。
在每一页的末尾都有“下一页”按钮。这是下一个按钮的html代码-
<li class="pagination__next" data-reactid=".0.3.0.0.1.1.1.3.2">
<span class="icon-arrowright-thin--pagination" data-reactid=".0.3.0.0.1.1.1.3.2.0">
::before
</span>
</li>
我正在使用美化组4提取信息。如何导航到下一页。
我能用mechanize导航这种类型吗
Tags:
BeautifulSoup是一个HTML解析器,不是web浏览器,它不能导航或下载页面。为此,您通常使用一个HTTP库,比如
urllib
或request
,从一个特定的URL获取HTML,以便将其馈送给BeautifulSoup。在你的例子中,mechanize
可以用来做这个。不幸的是,pagination按钮提供的HTML不是链接,因此它没有
href
属性。如果是这样的话,您就可以很容易地解析它的URL并告诉HTTP库去获取它。相反,您需要使用mechanize来模拟该按钮上的单击事件,稍等片刻,然后假设新页面已加载,然后将生成的HTML传递给BeautifulSoup。
如果“下一页”涉及javascript,那么是的,您只能机械化。你可以用硒来做
您可以将post模拟成https://colleges.niche.com/entity-search/,但更简单的方法是从第一页获取总页数,然后在2到页数的范围内循环。添加到起始url的所有内容都是&page=page撸number:
如果我们对代码进行几次迭代,可以看到我们得到了每个页面:
如果你要模仿这个帖子,下面的方法就行了。根据您需要的数据,当您返回json时,这可能更可取:
这给你提供了如下数据:
其中可能包括动态创建的内容,这些内容在返回的源中是无法获取的。
对于评论url https://colleges.niche.com/williams-college/reviews,您需要解析源代码中的标记,然后执行与前面完全相同的post:
它给你:
你应该能够根据答案的其他部分自己找出答案。
相关问题 更多 >
编程相关推荐