【问题标题】:How to grab next page url from pagination.如何从分页中获取下一页 url。
【发布时间】:2017-06-19 10:45:00
【问题描述】:

无法获取下一页的网址。引发回溯错误。基本上我想抓住“/browse-movies?page=2”

from bs4 import BeautifulSoup
import requests
import re
url = "https://yts.ag/browse-movies?page=1"
headers = {'User-Agent': 'Mozilla/5.0'}
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, "html.parser")
items = soup.find_all('ul', 'tsc_pagination')[0]
for item in items:
    print item

【问题讨论】:

    标签: python pagination beautifulsoup


    【解决方案1】:

    您可以使用range(1, 300) 来迭代所有页面:

    from bs4 import BeautifulSoup
    import requests
    
    headers = {'User-Agent': 'Mozilla/5.0'}
    
    for i in range(1, 300):
        url = "https://yts.ag/browse-movies?page=%s" % i
    
        response = requests.get(url, headers=headers)
        soup = BeautifulSoup(response.text, "html.parser")
        items = soup.find_all('div', 'browse-movie-wrap')
        for item in items:
            for val in item.find_all('div','browse-movie-bottom'):
                title = item.find_all('a','browse-movie-title')[0].text
                year = item.find_all('div','browse-movie-year')[0].text
            for val in item.find_all('a','browse-movie-link'):
                try:
                    rating = val.find_all('h4')[0].text
                    genre = val.find_all('h4')[1].text 
                except:
                    pass 
    
            print year, rating, genre, title
    

    P.S. 您可能需要添加 time.sleep(1) 以降低速度,以防他们因过于激进地抓取网页而阻止您的 IP。

    编辑:

    现在寻找下一页的URL,你可以使用正则表达式:

    import re
    
    next_page = soup.find('a', text=re.compile(r'.*Next.*'))
    print next_page['href']
    

    所以它的作用是寻找一个内容匹配正则表达式'.*Next.*'a 标签。

    【讨论】:

    • 感谢 Shane...它确实有效,但如果 url 每次都是随机字符串怎么办。
    • @ricky 然后你可能想解析页面以获取新的 URL
    • 对不起,我不太明白。我的意思是我正在解析一些带有 url webpage/abc 的页面,假设下一页是 webpage/xyz。在解析“abc”网页时如何获取此“xyz”网址。假设“abc”网页上只有一个下一步按钮......在此先感谢
    • 嗯,这就像你如何找到那些电影(年份、评级等),你也可以找到/解析下一页的链接,然后在下一次迭代中使用这个链接等等。
    • 谢谢 Shane 我明白了 :) 但我发现在亚马逊上的下一个按钮下面的 url 就像“href=/s/ref=sr_pg_2?rh=i%3Aaps%2Ck%3Ahorse% 2Bhead%2Bmask&page=2",里面没有http://的东西,我的意思是不是完整的url
    【解决方案2】:
    urls = ["https://yts.ag/browse-movies?page={}".format(i) for i in range(1, 10)]  # make a url list and iterate over it
    for url in urls:
        headers = {'User-Agent': 'Mozilla/5.0'}
        response = requests.get(url, headers=headers)
       # your code here
            print year, rating, genre, title
    

    制作一个 URL 列表并对其进行迭代。您可以更改范围。

    【讨论】:

      猜你喜欢
      • 2020-03-07
      • 1970-01-01
      • 1970-01-01
      • 2023-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-30
      相关资源
      最近更新 更多