Scrape href不使用python

Scrape href不使用python,python,beautifulsoup,href,Python,Beautifulsoup,Href,我有我正试图做的代码的副本,每次我一行一行地复制它时,它都不正常工作。我非常沮丧,似乎不知道它在哪里不起作用。我想做的是去一个网站,扔掉标有a,B,C的不同评级页面。。。等,然后我会去每个网站拉他们正在使用的页面总数。我正在努力刮去你可能想做的查找所有而不是查找——所以改变吧 for href in soup.find('span', class_='letter-pages'): 到 您希望遍历标记列表,而不是单个标记find将为您提供一个标记对象。当您迭代单个标记时,您迭代getNavig

我有我正试图做的代码的副本,每次我一行一行地复制它时,它都不正常工作。我非常沮丧,似乎不知道它在哪里不起作用。我想做的是去一个网站,扔掉标有a,B,C的不同评级页面。。。等,然后我会去每个网站拉他们正在使用的页面总数。我正在努力刮去你可能想做的
查找所有
而不是
查找
——所以改变吧

for href in soup.find('span', class_='letter-pages'):


您希望遍历标记列表,而不是单个标记
find
将为您提供一个标记对象。当您迭代单个标记时,您迭代get
NavigableString
对象
find_all
为您提供所需标记对象的列表。

您正在尝试过早获取href。您试图直接从嵌套了
a
标记的
span
标记中提取属性,而不是从
a
标记列表中提取属性

for each_rating in ratings:
    page  = requests.get(each_rating)
    soup = BeautifulSoup(page.text, 'html.parser')
    span = soup.find('span', class_='letter-pages')
    for a in span.find_all('a'):
        href = a.get('href')
        pages_scrape.append(href)
我并没有在所有的页面上测试这个,但它在第一个页面上有效。您指出,某些页面上的内容没有被删除,这是由于
span
搜索返回
None
。要解决此问题,您可以执行以下操作:

for each_rating in ratings:
    page  = requests.get(each_rating)
    soup = BeautifulSoup(page.text, 'html.parser')
    span = soup.find('span', class_='letter-pages')
    if span:
        for a in span.find_all('a'):
            href = a.get('href')
            pages_scrape.append(href)
            print(href)
    else:
        print('span.letter-pages not found on ' + page)

根据您的使用情况,您可能希望执行不同的操作,但这将向您指示哪些页面与您的刮削模型不匹配,需要手动调查。

什么是不工作?您是否收到错误消息?没有打印出来吗?不工作意味着我收到了错误消息<代码>属性错误:“NavigableString”对象没有属性“attrs”
它起作用了,但我不断收到回溯错误,因为我发现一些页面没有任何可刮的内容。我如何修复它?您可以使用if/else检查是否找到
span
元素。我会更新我的帖子来演示。
for each_rating in ratings:
    page  = requests.get(each_rating)
    soup = BeautifulSoup(page.text, 'html.parser')
    span = soup.find('span', class_='letter-pages')
    for a in span.find_all('a'):
        href = a.get('href')
        pages_scrape.append(href)
for each_rating in ratings:
    page  = requests.get(each_rating)
    soup = BeautifulSoup(page.text, 'html.parser')
    span = soup.find('span', class_='letter-pages')
    if span:
        for a in span.find_all('a'):
            href = a.get('href')
            pages_scrape.append(href)
            print(href)
    else:
        print('span.letter-pages not found on ' + page)