网络服务TripAdvisor



只是想取消莫斯科博物馆的名称,并尝试了这个代码:

import requests
from bs4 import BeautifulSoup
for offset in range(0, 726, 30):
print('--- page offset:', offset, '---')
url = 'https://www.tripadvisor.ru/Attractions-g298484-Activities-c49' + str(offset) + '-Moscow_Central_Russia.html#EATERY_LIST_CONTENTS'
r = requests.get(url, timeout=10, headers={'User-Agent': 'some cool user-agent'})
soup = BeautifulSoup(r.text, "html.parser")
for link in soup.findAll('a', {'title'}):
print(link.text.strip())

但什么也没发生:(如果有建议,我会很感激!

您的url中有一个错误(缺少-oa(,您的汤查询与html的html结构不匹配(元素没有title属性(。

import requests
import os
from bs4 import BeautifulSoup
import re
for offset in range(0, 726, 30):
url = 'https://www.tripadvisor.ru/Attractions-g298484-Activities-c49-t161-oa' + str(offset) + '-Moscow_Central_Russia.html'
r = requests.get(url, timeout=10, headers={'User-Agent': 'some cool user-agent'})
soup = BeautifulSoup(r.text, "html.parser")
for link in soup.findAll('a'):
text = link.text.strip()
if re.match('[0-9]+\.',text):
print(text)
会发生什么

主要问题是生成的URL没有指向正确的网站,导致一些字符丢失,所以网站是空的。这可能是因为url结构似乎是动态的。第二个问题是您的选择findAll()没有找到任何内容。

注意: 在新代码中使用find_all()而不是旧语法findAll()

如何修复

首先-从一个基本链接开始,并从下一页按钮生成所有其他链接,使用范围是第二好的解决方案。

soup.select_one('[aria-label="Next page"]')

第二-选择更具体的元素:

soup.select('a:has(h3)')
示例
import requests 
from bs4 import BeautifulSoup
url = 'https://www.tripadvisor.ru/Attractions-g298484-Activities-c49-t161-Moscow_Central_Russia.html#EATERY_LIST_CONTENTS'
while True:

r = requests.get(url, timeout=10, headers={'User-Agent': 'some cool user-agent'})
soup = BeautifulSoup(r.text, "html.parser")

for link in soup.select('a:has(h3)'):
print(link.text.strip())

if (a := soup.select_one('[aria-label="Next page"]')):
url = 'https://www.tripadvisor.ru'+a['href']
else:
break
输出
1. Московский Кремль
2. Царицыно Музей-Заповедник
3. Московский Государственный Объединенный Музей-Заповедник "Коломенское"
4. Музей советских игровых автоматов
5. Еврейский музей и центр толерантности
6. Усадьба Кусково
7. Музей "Московский транспорт"
8. Музей Михаила Булгакова
9. Парк Музеон
...

最新更新