Python3 Beautifulsoup4 и селен - PullRequest
0 голосов
/ 01 апреля 2020

Я написал этот код для очистки информации о результатах с livescore.com. Но у меня есть некоторые проблемы. Возможно я написал неверный код. Пожалуйста, помогите мне.

Вывод кода:

Traceback (most recent call last):
  File "web.py", line 15, in <module>
    box2 = box.find_all('a',{'class' : 'match-row scorelink'})
AttributeError: 'NoneType' object has no attribute 'find_all'


from bs4 import BeautifulSoup
import requests
from selenium import webdriver

driver = webdriver.Chrome()
driver.get('https://livescore.com')
res = driver.execute_script("return document.documentElement.outerHTML")
driver.quit()
#page = requests.get('https://livescore.com')
soup = BeautifulSoup(res, 'lxml')


box = soup.find('div',{'class':'container'})

box2 = box.find_all('a',{'class' : 'match-row scorelink'})

for data in box2:
    test = data.find('div',{'class': 'sco'}).text.replace('\n', '')
print (test)



Ответы [ 4 ]

0 голосов
/ 01 апреля 2020

Спасибо за ответы. Решенная проблема


from bs4 import BeautifulSoup
import requests
from selenium import webdriver

driver = webdriver.Chrome()
driver.get('https://livescore.com')
res = driver.execute_script("return document.documentElement.outerHTML")
driver.quit()
#page = requests.get('https://livescore.com')
soup = BeautifulSoup(res, 'lxml')


box = soup.find('div',{'data-type':'container'})

box2 = box.find_all('a',{'class' : 'match-row'})

for data in box2:
    test1 = data.find('div',{'class': 'sco'}).text.replace('\n', '')
    test2 = data.find('div',{'class': 'ply tright name'}).text.replace('\n', '')
    test3 = data.find('div',{'class': 'ply name'}).text.replace('\n', '')
    print(test2,test1,test3)



0 голосов
/ 01 апреля 2020

Дайте этому go. Я пропустил «box2», так как он не нужен для получения результатов. Кроме того, судя по данным, которые я выбрал, .replace('\n', '') также не требуется, но вы можете использовать его, если считаете, что получите счет, содержащий символ "\ n".

from bs4 import BeautifulSoup
from selenium import webdriver

driver = webdriver.Chrome()
driver.get('https://livescore.com')
res = driver.execute_script("return document.documentElement.outerHTML")
driver.quit()

soup = BeautifulSoup(res, 'lxml')
box = soup.find('div',{'data-type':'container'})
scores=box.find_all('div',{'class': 'sco'})

for score in scores:
    print(score.text)
0 голосов
/ 01 апреля 2020

Используйте следующий css селектор. Однако container не является значением атрибута класса. Его значение data-type='container' значение атрибута.

from bs4 import BeautifulSoup
from selenium import webdriver

driver = webdriver.Chrome()
driver.get('https://livescore.com')
res = driver.execute_script("return document.documentElement.outerHTML")
driver.quit()
soup = BeautifulSoup(res, 'lxml')
for item in soup.select("div[data-type='container'] .match-row.scorelink>.sco"):
    test=item.text.replace('\n', '')
    print(test)
0 голосов
/ 01 апреля 2020

Попробуйте:

from bs4 import BeautifulSoup
import requests
from selenium import webdriver

driver = webdriver.Chrome()
driver.get('https://livescore.com')
#page = requests.get('https://livescore.com')
soup = BeautifulSoup(driver.page_source, 'lxml')
driver.quit()

box = soup.find('div',{'class':'container'})

box2 = box.find_all('a',{'class' : 'match-row scorelink'})

for data in box2:
    test = data.find('div',{'class': 'sco'}).text.replace('\n', '')
print (test)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...