У меня есть скрипт, который загружает страницу и сохраняет кучу идентификаторов данных из нескольких контейнеров. Затем я хочу открыть новые URL-адреса, добавив указанные идентификаторы данных в конец URL-адресов. Для каждого URL-адреса я хочу найти все hrefs и сравнить их со списком конкретных ссылок, и если какие-либо из них совпадают, я хочу сохранить эту ссылку и некоторые другие данные в таблице.
Мне удалось заставить его открыть URL-адрес с добавленным идентификатором данных, но когда я пытаюсь найти элементы на новой странице, он либо извлекает их из первого URL-адреса, который был проанализирован, если я снова пытаюсь найти все из супа, либо я постоянно получаю эта ошибка, когда я пытаюсь запустить другой html.parser.
У объекта ResultSet нет атрибута findAll. Вероятно, вы рассматриваете список элементов как один элемент. Вы вызвали find_all(), когда хотели вызвать find()?
Неужели нельзя запустить другой парсер или я просто что-то не так делаю?
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from bs4 import BeautifulSoup as soup
from selenium.webdriver.common.action_chains import ActionChains
url = "http://csgo.exchange/id/76561197999004010#x"
driver = webdriver.Firefox()
driver.get(url)
import time
time.sleep(15)
html = driver.page_source
soup = soup(html, "html.parser")
containers = soup.findAll("div",{"class":"vItem"})
print(len(containers))
data_ids = [] # Make a list to hold the data-id's
for container in containers:
test = container.attrs["data-id"]
data_ids.append(test) # add data-id's to the list
print(str(test))
for id in data_ids:
url2 = "http://csgo.exchange/item/" + id
driver.get(url2)
import time
time.sleep(2)
soup2 = soup(html, "html.parser")
containers2 = soup2.findAll("div",{"class":"bar"})
print(str(containers2))
with open('scraped.txt', 'w', encoding="utf-8") as file:
for id in data_ids:
file.write(str(id)+'\n') # write every data-id to a new line