python selenium Scraper:Хотите сохранить данные в файл json?

#python #json #selenium

Вопрос:

Я создал скребок, используя selenium python.У меня есть веб-сайт «http//:www.mytravelexp.com», для которого я создал скребок. Используемая технология:python,селен. Пример того, чего я добился : я использовал скребок, чтобы получить ссылки и изображения с одной веб-страницы.Я получаю данные в своей консоли. Что мне нужно, чтобы результат был : Я хочу, чтобы результат был сохранен в файл json в следующем формате: «ссылка»:»http://www.mytravelexp.com» «изображение»:»http://www.mytravelexp.com/image1″ Пожалуйста, подскажите, как это сделать. Вот код:

 index.py
from selenium import webdriver
from time import sleep
import re 
import json
   
 
driver = webdriver.Chrome(
    executable_path="D:Codeless_Events6chromedriver.exe")
driver.get("https://www.mytravelexp.com/")
sleep(3)
  
src = driver.page_source
print(driver.title)
 text_found = re.search(r'Learn More', src)
for a in driver.find_elements_by_xpath('.//a'):
    print(a.get_attribute('href'))
for a in driver.find_elements_by_xpath('.//span'):
 print(a.get_attribute('href'))
 images = driver.find_elements_by_tag_name('img')
for image in images:
 print(image.get_attribute('data-src'))
sleep(4)
print(text_found)
dictionary ={
    "title":"",
    "link" :"",
    "button" :"",
    "image" :""
}
   
with open("sample.json", "w") as outfile:
    json.dump(dictionary, outfile)
driver.close() 

Ответ №1:

Вот мое редактирование вашего кода в соответствии с моим пониманием ваших требований :

 from selenium import webdriver
from time import sleep
import re
import json


driver = webdriver.Chrome(
    executable_path=r"C:UsersAtharvaDesktopProjectsseleniumchromedriver.exe")
driver.get("https://www.mytravelexp.com/")
sleep(3)

src = driver.page_source
print(driver.title)
entry = {}
count = 0
dictionary = {}

text_found = re.search(r'Learn More', src)
for a in driver.find_elements_by_xpath('.//a'):
    href = a.get_attribute('href')
    if href:
        entry['title'] = href
        entry['link'] = a.get_attribute('class')
    dictionary[count] = entry
    entry = {}
    count  = 1
for a in driver.find_elements_by_xpath('.//span'):
    href = a.get_attribute('href')
    if href:
        entry['title'] = href
        entry['link'] = a.get_attribute('class')
    dictionary[count] = entry
    entry = {}
    count  = 1
    images = driver.find_elements_by_tag_name('img')

for image in images:
    data_src= a.get_attribute('data-src')
    if data_src:
        entry['title'] = data_src
        entry['link'] = a.get_attribute('class')
    dictionary[count] = entry
    entry = {}
    count  = 1

with open("sample.json", "w") as outfile:
    json.dump(dictionary, outfile)
driver.close()