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