Scrape Dynami c Сайт не возвращает специфику c href beautiful soup - PullRequest
0 голосов
/ 20 июня 2020

Я пытался очистить этот сайт с помощью селена и beautifulSoup. Однако я думаю, что делаю что-то не так, так как не могу вернуть href из указанного c class ('card-content).

Итак, я использовал это:

links = [link.get('href') for link in soup.select('a')]

Что приносит несколько результатов, которые для меня не имеют значения. Я хочу, чтобы все href начинались с '/ portal ..', что привело бы к дальнейшей работе.

Код, который я придумал, чтобы попытаться получить то, что я хочу, следующий:

links = []
for i in range(1,510):
    driver = webdriver.Chrome('../chromedriver')
    url = "https://www.reclameaqui.com.br/empresa/portal-da-prefeitura-de-sao-paulo/lista-reclamacoes/?pagina=%s" % i
    driver.get(url)
    soup = BeautifulSoup(driver.page_source)
    href = [a['href'] for a in soup.select('a[href]')]
    if len(href) in ('321','323','324','325','326'):
        for j in range(262,272):
            links.append(href[j])
    elif len(href) in ('330','331'):
        for j in range(264,274):
            links.append(href[j])
    else:
        for j in range(258,274):
            links.append(href[j])    
    driver.close()
    time.sleep(2)

'if-else' должен был попытаться получить правильный href из списка возвращенных href, но по какой-то причине он активирует только оператор else, и мне все равно нужно применить некоторую очистку после этого.

Есть способ получить только href (href = "/ portal-da-prefeitura-de-sao-paulo / som-alto-de-agganda-com-autos-falantes_Jg3fS46He5aLo9PZ /") Я хочу от div class = "card-content"?

Есть идеи, что я делал неправильно?

1 Ответ

1 голос
/ 21 июня 2020

Проверьте это:

webPageSource = driver.page_source

soup = BeautifulSoup(webPageSource, "html.parser")

links_ = soup.findAll('a',{'class':'link-complain-id-complains label-not-answered'})

for i in range(0,len(links_)):

     print(links_[i]['href'])

введите описание изображения здесь

...