#python #web-scraping #beautifulsoup
#python #веб-очистка #beautifulsoup
Вопрос:
Я пытаюсь создать таблицу на http://tickertrak.com / но я не могу этого сделать. Код ничего не читает после тега таблицы, и я даже не вижу его, поэтому я просто в замешательстве. Я новичок в webscraping и до сих пор мог создавать таблицы Википедии.
import time
!pip install selenium
!apt install chromium-chromedriver
!cp /usr/lib/chromium-browser/chromedriver /usr/bin
import sys
sys.path.insert(0,'/usr/lib/chromium-browser/chromedriver')
import pandas as pd
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
options = Options()
options.headless = True
driver = webdriver.Chrome(options=options)
driver.get("http://tickertrak.com/")
time.sleep(2)
df = pd.read_html(driver.page_source, flavor="bs4")
df = pd.concat(df)
df.drop(index=0, axis=0, inplace=True)
df.to_csv("your_table.csv", index=False)`
Я получаю ошибки в строке:
driver = webdriver.Chrome(options=options)
для исключения webdriverexception. Я где-то забыл путь?
Комментарии:
1. Прекратите задавать несколько вопросов за один раз и не редактируйте свой пост, чтобы включить в него какой-либо ответ, который у вас есть.
Ответ №1:
Эта таблица генерируется динамически с помощью JS
( JavaScript
), поэтому вы не получите данные с помощью простого requests
и bs4
.
Тем не менее, вы можете попробовать selenium
и объединить его с panadas
.
Вот как:
import time
import pandas as pd
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
options = Options()
options.headless = True
driver = webdriver.Chrome(options=options)
driver.get("http://tickertrak.com/")
time.sleep(2)
df = pd.read_html(driver.page_source, flavor="bs4")
df = pd.concat(df)
df.drop(index=0, axis=0, inplace=True)
df.to_csv("your_table.csv", index=False)
В результате создается .csv
файл, который выглядит следующим образом:
Комментарии:
1. Привет @baduker В настоящее время у меня возникла проблема и я получаю ошибки от `driver = webdriver. Chrome (параметры = параметры)
2. Сначала вам необходимо установить драйвер. Посмотрите это .
3. Я отредактировал свой пост, чтобы показать свой код. Я считаю, что я отформатировал его для загрузки. Возможно, путь перепутан?
4. В какой системе вы работаете?
5. Я использую Google collab notebook. Мой план состоит в том, чтобы очистить, а затем сбросить это в Google Sheet. Надеюсь, что это поможет и спасибо за помощь до сих пор
Ответ №2:
Это один из самых быстрых способов получения данных с помощью модуля запросов с этой веб-страницы, поскольку данные уже находятся в источнике страницы в теге script. Все, что вы хотите сделать сейчас, это очистить данные перед их сохранением в dataframe.
import re
import requests
URL = 'http://tickertrak.com/'
with requests.Session() as s:
s.headers['User-Agent'] = 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.104 Safari/537.36'
r = s.get(URL)
items = re.findall(r"var arrayFromPHP = [(.*?)];",r.text)[0]
trs = re.findall(r"[(.*?)]",items)
for tds in trs:
print(tds)
Вывод выглядит так:
"Options","gamestop corp","gme","1","58662","131","-80","-85","1"
"Options","amc entertainment holdings inc","AMC","1","16290","36","-79","-66","2"
"Options","nokia corp","nok","1","3568","14","-86","-88","3"
"Options","regal-beloit corp","RBC","1","3254","11","-56","-89","4"
"Options","blackberry ltd","BB","1","3002","10","-91","-92","5"