【问题标题】:Getting an error with pagination - python web scraping分页出错 - python web scraping
【发布时间】:2020-12-03 10:47:56
【问题描述】:

我是网络抓取的新手,所以在这里我为亚马逊网络抓取编写了一个代码,但我在分页时遇到错误,请指导我如何解决这个错误。 看看我的代码:

from requests_html import HTMLSession
from  bs4 import BeautifulSoup as bs

url = 'https://www.amazon.com/s?k=oneplus+8+pro&crid=341BPYMDWRS5W&qid=1606986946&sprefix=oneplus%2Caps'
s = HTMLSession()


def getdata(url):
    r = s.get(url)
    soup = bs(r.text,'html.parser')
    return soup
def nextpage(soup):
    page = soup.find('ul', {'class':'a-pagination'})
    if not page.find('li', {'class':'a-disabled a-last'}):
        url = 'https://www.amazon.com'+ str(page.find('li', {'class':'a-selected'}).find('a')['href'])
        return url
    else:
        return
while True:
    soup = getdata(url)
    url = nextpage(soup)
    if not url:
        break
    print(url)

我收到了这个错误:

Traceback(最近一次调用最后一次): 文件“C:\Users\DELL\PycharmProjects\first\Amazon.py”,第 34 行,在 url = 下一页(汤) 文件“C:\Users\DELL\PycharmProjects\first\Amazon.py”,第 27 行,在下一页 如果不是 page.find('li', {'class':'a-disabled'}): AttributeError: 'NoneType' 对象没有属性 'find'

【问题讨论】:

  • 在到达最后一页之前是否出现错误?

标签: python web-scraping beautifulsoup


【解决方案1】:

错误消息表明pageNone,如果上面的soup.find() 找不到属性并因此返回None,就会发生这种情况。在继续搜索其他内容之前,您需要检查是否确实找到了该属性。

所以而不是:

def nextpage(soup):
    page = soup.find('ul', {'class':'a-pagination'})
    if not page.find('li', {'class':'a-disabled a-last'}):
        url = 'https://www.amazon.com'+ str(page.find('li', {'class':'a-selected'}).find('a')['href'])
        return url
    else:
        return

应该是这样的:

def nextpage(soup):
    page = soup.find('ul', {'class':'a-pagination'})
    if page is None:
        # page not found; return or do something else
        return
    elif not page.find('li', {'class':'a-disabled a-last'}):
        url = 'https://www.amazon.com'+ str(page.find('li', {'class':'a-selected'}).find('a')['href'])
        return url
    else:
        return

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-12
    • 2020-09-19
    • 1970-01-01
    • 1970-01-01
    • 2018-08-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多