Beautiful-soup find_all не может ничего захватить по определенной ссылке - PullRequest
0 голосов
/ 17 мая 2018

Так что я пытаюсь этот код, но я не знаю, почему он ничего не выводит: -

import requests
import json
from bs4 import BeautifulSoup
s=requests.get("https://www.google.co.in/search?rlz=1C1CHBD_enIN789IN790&ei=iWj5WouoDsfGvgSr16bwDg&q=United+States%09KEEP+SMILIN+FAMILY+DENTAL%092281+N+ZARAGOZA+RD+STE+102&oq=United+States%09KEEP+SMILIN+FAMILY+DENTAL%092281+N+ZARAGOZA+RD+STE+102&gs_l=psy-ab.12...1153407.1153407.0.1154512.0.0.0.0.0.0.0.0..0.0....0...1c.1.64.psy-ab..0.0.0....0.YvWjU-kIBUs")
soup =BeautifulSoup(s.content,'html.parser')

#zloOqf, kpS1Ac, vk_gy : Tried all of these tags one by one but none worked
soup.find_all("div",{"class":"kpS1Ac"})

Out [30] : []

Даже это не работает: -

soup.findAll("span",{"class":'YhemCb'})
Out [30] : []

Требуемый вывод: -

Dental clinic in El Paso, Texas

Ответы [ 2 ]

0 голосов
/ 17 мая 2018

Вам нужно добавить заголовки в запросах и вызвать правильный класс т.е.zloOqf kpS1Ac vk_gy в BeautifulSoup модуль:

#code:

import requests

headers = {"User-Agent": "Mozilla/5.0(Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36(KHTML, like Gecko) Chrome/60.0.3112.101 Safari/537.36"}

url = "https://www.google.co.in/search?rlz=1C1CHBD_enIN789IN790&ei=iWj5WouoDsfGvgSr16bwDg&q=United+States%09KEEP+SMILIN+FAMILY+DENTAL%092281+N+ZARAGOZA+RD+STE+102&oq=United+States%09KEEP+SMILIN+FAMILY+DENTAL%092281+N+ZARAGOZA+RD+STE+102&gs_l=psy-ab.12...1153407.1153407.0.1154512.0.0.0.0.0.0.0.0..0.0....0...1c.1.64.psy-ab..0.0.0....0.YvWjU-kIBUs"
from bs4 import BeautifulSoup
s=requests.get(url, headers=headers)
soup =BeautifulSoup(s.content,'html.parser')

data=  soup.findAll("div",{"class":"zloOqf kpS1Ac vk_gy"})
print data
final_output=  data[0].find("span")
print final_output.text

выход:

Dental clinic in El Paso, Texas
0 голосов
/ 17 мая 2018

Причина, по которой вы получили пустые результаты, заключается в том, что они отсутствуют в вашем response.content. Для того, чтобы получить эту часть, попробуйте добавить Заголовки в reports.get ().

HEADERS = {
           "User-Agent": "Mozilla/5.0(Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36(KHTML, like Gecko) Chrome/60.0.3112.101 Safari/537.36",
           "Accept-Language": "en-US,en;q=0.8,he;q=0.6",
          }
s = requests.get(<your_url>, headers=HEADERS)
soup =BeautifulSoup(s.content,'html.parser')
soup.findAll("span",{"class":'YhemCb'})

Выход:

[<span class="YhemCb">Dental clinic in El Paso, Texas</span>]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...