Очистка упорядоченного списка с использованием BeautifulSoup4 и Python - PullRequest
0 голосов
/ 11 октября 2018

Я относительно новичок в Python / BS4 и очистке данных, поэтому мне кажется, что это простая проблема, но у меня возникают проблемы с поиском любых ресурсов в Интернете.

Моя цель - использовать этот сайт для генерации случайных адресов и очистки их с использованием BS4.

Мой текущий код выглядит следующим образом:

site = 'https://www.randomlists.com/random-addresses?qty=10'

res = requests.get(site)
soup = bs4.BeautifulSoup(res.text, 'html.parser')

bigdata = soup.find('ol',{'class':'rand_large'})
print(bigdata)

Возвращает 'Нет'

Iубедитесь, что данные, которые я хочу, находятся внутри «ола», который, как я понимаю, является упорядоченным списком.В прошлом я провел некоторые базовые расчеты и запутался, почему приведенный выше код не может найти 'rand_large'.

Есть предложения?

Небольшое редактирование / дополнение: использование

bigdata = soup.find('div',{'class':'Rand-stage'})

возвращает:

<div class="Rand-stage"> <div class="Rand-stage-loading"> Loading… </div> </div>

Я не понимаю, откуда взялись дополнительные "вещи".

1 Ответ

0 голосов
/ 11 октября 2018
In[2]: from bs4 import BeautifulSoup
  ...: from selenium import webdriver
  ...: 
  ...: url = 'https://www.randomlists.com/random-addresses'
  ...: 
  ...: chrome_options = webdriver.ChromeOptions()
  ...: chrome_options.add_argument('--headless')
  ...: driver = webdriver.Chrome(options=chrome_options)
  ...: 
  ...: driver.get('{}?qty={}'.format(url, 1346))
  ...: html = driver.page_source
  ...: driver.quit()
  ...: 
  ...: soup = BeautifulSoup(html, 'lxml')
  ...: result = []
  ...: for li in soup.find('ol', class_='rand_large').find_all('li'):
  ...:     result.append(list(li.stripped_strings))
  ...: 
In[3]: len(result)
Out[3]: 1346
In[4]: result[:10]
Out[4]: 
[['2 Tanglewood Dr.', 'Ringgold, GA 30736'],
 ['7538 South Windfall Avenue', 'Marysville, OH 43040'],
 ['944 Harvey Street', 'Stevens Point, WI 54481'],
 ['804 Smith St.', 'Des Plaines, IL 60016'],
 ['78 Bohemia Road', 'Williamstown, NJ 08094'],
 ['7509 San Juan Dr.', 'Cranston, RI 02920'],
 ['8003 6th Street', 'Inman, SC 29349'],
 ['118 Roosevelt Dr.', 'Fort Worth, TX 76110'],
 ['242 Young Lane', 'Mcdonough, GA 30252'],
 ['3 Marsh St.', 'Bay Shore, NY 11706']]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...