当前位置: 首页 > 知识库问答 >
问题:

使用漂亮的汤来模拟页面点击来访问页面上的所有超文本标记语言?

朱乐逸
2023-03-14

我正在尝试浏览以下网站:

https://www.bandsintown.com/?came_from=257

使用以下代码,我能够使用beautifulsoup成功地抓取页面上列出的事件:

from bs4 import BeautifulSoup
import requests
url = 'https://www.bandsintown.com/?came_from=257&sort_by_filter=Number+of+RSVPs'
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')


dates = soup.find_all('div', {'class': 'event-b58f7990'})
month=[]
day=[]
for i in dates:
    md = i.find_all('div')
    month.append(md[0].text)
    day.append(md[1].text)

然而,我遇到的问题是,我只能抓取前18个事件-页面的其余部分只有在单击底部的“全部查看”按钮时才可用。在beautifulsoup或其他程序中,是否有办法模拟单击此按钮,以便我可以刮取所有数据?我更喜欢用python来保存它,因为我正在用beautifulsoup进行大多数刮片。非常感谢!

共有1个答案

车嘉实
2023-03-14

如果您可以计算出以下范围的结束点或设置范围的结束点(对于走得太远的错误处理),您可以得到一个json响应,并解析出您需要的信息,如下所示。根据发出的请求数量,您可以选择重新使用与会话的连接。

import requests
import pandas as pd

url = 'https://www.bandsintown.com/upcomingEvents?came_from=257&sort_by_filter=Number+of+RSVPs&page={}&latitude=51.5167&longitude=0.0667'
results = []
for page in range(1,20):
    data = requests.get(url.format(page)).json()
    for item in data['events']:
        results.append([item['artistName'], item['eventDate']['day'],item['eventDate']['month']])
df = pd.DataFrame(results)
print(df)
 类似资料:
  • 我已经获得了刮取第一页的代码,但是url从: https://www.expansion.com/empresas-de/ganaderia/granjas-en-general/index.html -- 如何创建从第2页到第65页的循环?非常感谢!

  • 我试图刮此页上Flipkart: http://www.flipkart.com/moto-x-play/p/itmeajtqp9sfxgsk?pid=MOBEAJTQRH4CCRYM 我试图找到的div类"fk-ui-ccarousel超级容器相同的vreco部分reco-carousel-边界-顶部sameHorizontalReco",但它返回空结果。 divs是空的。我使用inspect元

  • 我一直在使用下面的代码来解析链接中的网页https://www.blogforacure.com/members.php.代码将返回给定页面的所有成员的链接。 但是我只得到上面页面的前10个链接。即使在打印美化选项时,我也只能看到前10个链接。

  • 已经讨论过这些话题,但没有对我起作用: Topic1我的项目中没有注释 这是我用于Thymeleaf的依赖项: 我的新控制器名为 名为uploadView的HTML。html 项目结构: 我的评论:我仍然得到一个白标签错误页面,位于本地主机:8082/uploadendpoint 编辑1: 我的SpringBootApplication类 <代码>应用程序。属性文件: 服务器的日志 白标错误页面:

  • 我想开发一个包含注册和登录按钮的登录HTML页面。在运行时的HTML页面中,我可以选择任何按钮(登录/注册)。点击注册页面时,页面应重定向至注册JSP程序,点击登录页面时,页面应重定向至登录Servlet程序。现在的问题是,我必须在html页面中提到表单的实际方法?如何解决这个问题?

  • 说明: 我试图将JSON数据从超文本标记语言页面发送到使用Fetch API在端口5000本地运行的Node.js服务器。 获取错误: 在'http://localhost:5000/attend“起源”http://127.0.0.1:5501'已被CORS策略阻止:对飞行前请求的响应未通过访问控制检查:请求的资源上不存在'access control Allow Origin'标头。如果不透明