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

For循环尝试刮取TripAdvisor餐厅数据

百里景山
2023-03-14

我试着在香港列出所有餐馆和他们的相应网址。目前,在我下面的代码中,我能够刮取第一页和第二页。但我希望底部的for循环更具动态性,并不断刮取,直到达到我在range()中指定的条目数量。

我在这方面还是个新手,所以任何帮助都会很棒。

#import libraries
import requests
from bs4 import BeautifulSoup
import csv


#scrape the first page because this URL is different then when you start moving to different pages
url0 = 'https://www.tripadvisor.com/Restaurants-g294217-Hong_Kong.html#EATERY_LIST_CONTENTS'
r = requests.get(url0)
data = r.text
soup = BeautifulSoup(r.text, "html.parser")
for link in soup.findAll('a', {'property_title'}):
    print 'https://www.tripadvisor.com/Restaurant_Review-g294217-' + link.get('href')
    print link.string

#loop to move into the next pages. entries are in increments of 30 per page
for i in range(0, 120, 30):
    entries = str(30)
    #url format offsets the restaurants in increments of 30 after the oa; hence entries as variable
    url1 = 'https://www.tripadvisor.com/Restaurants-g294217-oa' + entries + '-Hong_Kong.html#EATERY_LIST_CONTENTS'
    r1 = requests.get(url1)
    data1 = r1.text
    soup1 = BeautifulSoup(data1, "html.parser")
    for link in soup1.findAll('a', {'property_title'}):
        print 'https://www.tripadvisor.com/Restaurant_Review-g294217-' + link.get('href')
        print link.string
    break

共有1个答案

董鸣
2023-03-14

最后加了一段时间,让它按照我想要的方式循环。希望这对未来的人们有所帮助

for i in range(30, 120, 30):
    while i <= range:
        i = str(i)
        #url format offsets the restaurants in increments of 30 after the oa; hence entries as variable
        url1 = 'https://www.tripadvisor.com/Restaurants-g294217-oa' + i + '-Hong_Kong.html#EATERY_LIST_CONTENTS'
        r1 = requests.get(url1)
        data1 = r1.text
        soup1 = BeautifulSoup(data1, "html.parser")
        for link in soup1.findAll('a', {'property_title'}):
            print 'https://www.tripadvisor.com/Restaurant_Review-g294217-' + link.get('href')
            print link.string
        break
 类似资料:
  • 餐馆放置(Idle Restaurant)汉化版,是一款策略挂机放置类小游戏。 游戏开始你需要在厨师乔治的指导下进行工作和获取经营餐馆的知识,初期你需要通过刷碗来赚取一些初始资金,之后逐步实现你的餐馆梦。

  • 我试图使用Selenium从代码中获得jpg。我已经设法找到了链接点击获得我的jpg所在的位置。(真倒霉!我刚接触硒)。所有的窗户都随着它的点击而打开。与刮刮乐相比,它真的很慢,所以如果有人能告诉我一个更快的方法,那就太好了。 我试图搜索的网站是www.rosegal.com。我正在刮的类别是大尺寸的背心。这第一页有60个产品在它。如果单击这些产品,它会将您带到一个产品页面,在该页面上您可以选择所

  • 问题内容: 在遍历列表的Python循环中,我们可以编写: 并巧妙地遍历列表中的所有元素。有没有办法知道循环中到目前为止我循环了多少次?例如,我要列出一个清单,在处理完10个元素之后,我想对它们进行处理。 我考虑过的替代方案可能是: 要么: 是否有更好的方法(就像)来获得到目前为止的迭代次数? 问题答案: pythonic的方法是使用:

  • 这是我的POM。我已经在/Cucumber/Maven/framework中设置了restasured。我想在我的框架中使用serenityBDD。用于报告目的。因此,我正在运行我的CukeTest,如下所示 当我运行测试时,我得到以下错误 我重新发布了/cumber/maven项目。 任何帮助将不胜感激。感谢您的帮助。

  • 问题内容: 第二次尝试解决此问题(初始代码不足以突出该问题) 这是无法编译的代码: 我遇到的是试图让AbstractGame中的play方法进行编译。似乎我必须与Game和Player一起在扩展/实现中添加泛型,但我一生都无法理解。 play方法必须在AbstractGame类中是最终方法,并且无法进行强制转换,而且我不想编写另一种方法(如turnTaken)来使它能够正常工作。 编辑:这里要求的

  • 我试图在for循环中获得for循环,因此输出如下: 我希望输出显示一个正方形 我不知道它为什么不这样做。下面是我的代码: