【问题标题】:Scrape web untill the "next" page is disabled抓取网页直到“下一页”被禁用
【发布时间】:2019-08-03 11:04:19
【问题描述】:
url = 'https://www.tripadvisor.ie/Attraction_Review-g295424-d2038312-Reviews-Global_Village-Dubai_Emirate_of_Dubai.html'
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
def get_links():
  review_links = []
  for review_link in soup.find_all('a', {'class':'title'},href=True):
      review_link = review_link['href']
      review_links.append(review_link)
  return review_links
link = 'https://www.tripadvisor.ie'
review_urls = []
for i in get_links():
   review_url = link + i
   print (review_url)
review_urls.append(review_url)

此代码用于保存此网页上存在的所有超链接 - 但我想抓取页面上的所有超链接直到 319。禁用分页时无法实现

【问题讨论】:

    标签: python web-scraping beautifulsoup pagination


    【解决方案1】:

    您可以在 url 中更改一个参数以循环并获取所有评论。 所以我只是添加了一个循环并请求所有的网址

    def get_page(index):
        url = "https://www.tripadvisor.ie/Attraction_Review-g295424-d2038312-Reviews-or{}-Global_Village-Dubai_Emirate_of_Dubai.html".format(str(index))
        html = requests.get(url)
        page = soup(html.text, 'html.parser')
        return page
    
    nb_review = 3187
    for i in range(0, nb_review, 10):
        page = get_page(i)
    

    使用你的 sn-p 的完整代码是:

    from bs4 import BeautifulSoup as soup
    import requests
    
    def get_page(index):
        url = "https://www.tripadvisor.ie/Attraction_Review-g295424-d2038312-Reviews-or{}-Global_Village-Dubai_Emirate_of_Dubai.html".format(str(index))
        html = requests.get(url)
        page = soup(html.text, 'html.parser')
        return page
    
    def get_links(page):
      review_links = []
      for review_link in page.find_all('a', {'class':'title'},href=True):
          review_link = review_link['href']
          review_links.append(review_link)
      return review_links
    
    link = 'https://www.tripadvisor.ie'
    review_urls = []
    nb_review = 3187
    for i in range(0, nb_review, 10):
        page = get_page(i)
        for i in get_links(page):
            review_url = link + i
            review_urls.append(review_url)
    print(len(review_urls))
    

    输出:

    3187
    

    编辑:

    你显然可以抓取第一页并获取评论号以升级代码以使其更具可定制性

    【讨论】:

      猜你喜欢
      • 2021-09-15
      • 1970-01-01
      • 2021-06-28
      • 1970-01-01
      • 2021-06-03
      • 2020-06-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多