从网站解析<script> ... </script>中的数据

时间:2017-08-18 14:10:01

标签: python regex web-scraping

有一个网站(http://mediametrics.ru/rating/ru/online.html),其中包含以下标签:

<script type="text/javascript"><!--
  function refresh(){
    getRows("hour.tsv?page=", "1", 10000);
    updateLiveInternetCounter();
  }
  var article = 0;
  var tsv = "                       3 580   1503064650\nrussian.rt.com/ussr/news/420565-sbu-uchitelnica-ukrainskie-shkolniki-rossiya    СБУ даст правовую оценку учительнице, свозившей украинских школьников в Россию  2003    6   0   218586881   hot\nrussian.rt.com/russia/news/420578-osin-reabilitacionniy-centr  Источник: Осин помещён в реабилитационный центр для лечения алкозависимости 984 1   0   218847908   hot\nria.ru/world/20170818/1500636323.html  Поездка школьников в Россию вызвала скандал на Украине  647 0   0   218509759   \nlife.ru/t/новости/1036389 Расчленивший Порошенко в одесском СИЗО заманил её посмотреть на выводок поросят 558 -3  0   194349817   \nlife.ru/t/новости/1036406 К Земле летит крупнейший в истории астероид 533 10  -14 218511351   hot\nlife.ru/t/новости/1036375  &quot;Горите, твари&quot;. Девушка сожгла квартиру экс-любовника, застав его с подругами    515 1   0   218563876   \nrussian.rt.com/opinion/420572-sshamir-racizm-ssha Борьба за гегемонию 341 2   0   218733119   hot\nria.ru/analytics/20170818/1500623118.html  &quot;Испания не ваша&quot;. Чему удивляется Европа после теракта в Барселоне   333 0   0   218565081   \nkazanfirst.ru/online/428961   Звезда 90-х Евгений Осин пропал без вести   276 1   0   218757821   \nlife.ru/t/новости/1036397 Неопалимая. Туристка из Австралии за год пережила теракты в трёх странах Европы 261 1   0   194318792   hot\nkazanfirst.ru/online/428899    В Нижнекамске на территории детского сада нашли повешенное тело мужчины     238 1   0   218711995   hot\nren.tv/novosti/2017-08-18/k-zemle-priblizhaetsya-krupneyshiy-so-vremeni-nablyudeniy-asteroid   К Земле приближается крупнейший со времени наблюдений астероид  205 0   0   234749571   \nmedialeaks.ru/1808qaz-mozhno-li-smeyatsya-nad-invalidami/ «Когда над нами шутят, мы чувствуем себя людьми». Можно ли смеяться над инвалидами  202 0   0   171003674   \nrussian.rt.com/inotv/2017-08-18/Die-Zeit-amerikanci-zrya-vinyat   Die Zeit: американцы зря винят Путина в беспорядках в Шарлотсвилле — ИноТВ  182 1   0   169450576   hot\nrussian.rt.com/inotv/2017-08-18/Polskij-ekspert-AES-v-Ostrovce Польский эксперт: АЭС в Островце увеличит зависимость Белоруссии от России — ИноТВ  170 0   0   171831971   hot\nproufu.ru/news/society/v_ufe_gostinyy_dvor_nazval_video_s_seksom_na_svoey_territorii_vyzyvayushchim_fleshmobom/    В Уфе «Гостиный двор» назвал видео с сексом на своей территории «вызывающим флешмобом»  164 1   0   214117541   \nria.ru/incidents/20170818/1500638674.html В Москве нашли пропавшего певца Евгения Осина   157 0   0   218897431   hot\nastravolga.ru/vnimanie-v-astraxani-propala-15-letnyaya-devochka/   Внимание, в Астрахани пропала 15-летняя девочка 146 0   0   48903255    \nrussian.rt.com/russia/news/420585-putin-pribyl-sevastopol Путин прибыл в Севастополь  146 2   -17 218748054   hot\nrg.ru/2017/08/18/samye-populiarnye-iphone-rezko-podesheveli-v-rossii.html  Самые популярные iPhone резко подешевели в России   137 0   0   234847900   hot\nrg.ru/2017/08/18/v-kieve-nazvali-stoimost-plana-marshalla-dlia-ukrainy.html    В Киеве назвали стоимость &quot;плана Маршалла&quot; для Украины    134 0   0   234794397   hot\neg.ru/society/374220/  Российский турист умер в Турции 126 0   0   218717203   \nrg.ru/2017/08/18/nasa-florence.html   Один из крупнейших астероидов в истории наблюдений сблизится с Землей   123 0   0   218573867   hot\neg.ru/showbusiness/374192/ Корчевникова опозорили перед Малаховым на «России 1»    117 0   0   234811413   \n76.ru/text/newsline/333398376001536.html  Смертельное ДТП на Октябрьском мосту: грузовик задавил дорожного рабочего   115 1   -1  194435595   \ntvzvezda.ru/news/vstrane_i_mire/content/201708181539-cyju.htm К Земле несется крупнейший за всю историю наблюдений астероид   114 -1  1   218487821   \nvesti.ru/doc.html?id=2922457  Дикие лошади развлекались, скатываясь на спинах со склона горы. Видео   101 1   0   234642168   hot\nlipetskmedia.ru/news/view/88764-Na_pohoroni.html   На похороны погибшей девушки липчане собрали более 18 тысяч рублей  96  1   0   218574664   hot\ntvzvezda.ru/news/vstrane_i_mire/content/201708181554-e4s9.htm  Эксперт рассказал о приходе к власти в Европе пророссийских политиков   91  0   -1  218830517   hot\nwww.gtrk.tv/novosti/55102-propavshaya-davlekanovo-devochka-naydena-zhivoy  Пропавшая в Давлеканово девочка найдена живой   91  -1  1   218739685   \nura.news/news/1052301050  Житель Свердловской области покончил с собой в прямом эфире. ВИДЕО  88  2   -1  234817985   \nlife.ru/t/новости/1036380 Как в разных городах мира усиливают меры безопасности после терактов с авто 87  0   1   218838043   hot\nren.tv/novosti/2017-08-18/s-miru-po-nitke-pensionerka-iz-peterburga-nazanimala-u-druzey-41-mln-rubley  С миру по нитке: пенсионерка из Петербурга назанимала у друзей 41 млн рублей    85  0   0   218509789   \ntvzvezda.ru/news/vstrane_i_mire/content/201708181514-i7xl.htm «Мишка косолапый» теперь вне закона в Латвии    84  1   0   218513398   \nwww.gazeta.ru/culture/news/2017/08/18/n_10452236.shtml    Источник рассказал о местонахождении Евгения Осина  83  1   -36 218518430   hot2\nkazanfirst.ru/online/428993   Эксперт ФАР о спорном ДТП в Казани: Вина водителя Kia очевидна — ехал на красный    82  1   1   218880995   \nren.tv/novosti/2017-08-18/propavshiy-pevec-osin-pokinul-kvartiru-s-neizvestnymi-lyudmi    Пропавший певец Осин покинул квартиру с неизвестными людьми 79  0   0   234841693   \nufa1.ru/text/newsline/333393980350464.html    В Уфе на переходе сбили девочку 77  1   0   194407135   \nprogorod76.ru/auto/21614  На Юбилейном мосту в Ярославле насмерть сбили дорожного рабочего    75  0   -1  234854112   \nprogorod33.ru/news/36433  Появилась полная программа празднования Дня города  74  0   1   234718524   \nprogorod43.ru/news/49747  Актер Павел Прилучный сделал подарок на свадьбу паре из Кирова  74  0   0   234650106   hot\nnews-front.info/2017/08/18/aleksandr-rodzhers-kriptovalyuty-eto-kidalovo/  Криптовалюты – это кидалово. Александр Роджерс  74  0   1   218498560   \nkazanfirst.ru/online/428881   Житель Нижнекамска получил 21 год колонии за двойное убийство   73  0   0   234753059   \nrussian.rt.com/inotv/2017-08-18/La-Croix-sankcii-i-ekonomicheskij La Croix: санкции и экономический рост ведут россиян в Мекку — ИноТВ    73  0   0   86929708    hot\nlife.ru/t/новости/1036381  Актёр из &quot;Бандитского Петербурга&quot; задержан за перестрелку во время игры в покер   70  -1  0   218675365   \nwww.gazeta.ru/culture/news/2017/08/18/n_10451966.shtml    Актер из сериала «Твин Пикс» арестован по подозрению в попытке убийства 69  0   0   192755461   hot\ntverigrad.ru/publication/samolety-iz-migalovo-perestanut-letat-nad-tveryu  Самолеты из Мигалово перестанут летать над Тверью   66  1   -30 234670474   hot2\nnews-front.info/2017/08/18/dmitrij-lekuh-amerikanskaya-shajtan-truba-dlya-ukrainy-s-polnym-razoblacheniem/    Американская «шайтан-труба» для Украины с полным разоблачением. Дмитрий Лекух   66  0   1   234781181   hot\nulpravda.ru/rubrics/soc/dvoe-ulianovtsev-popali-v-bolnitsu-s-podozritelnym-virusom Двое ульяновцев попали в больницу с подозрительным вирусом  66  0   1   218859103   \nren.tv/novosti/2017-08-18/propavshiy-pevec-osin-okazalsya-v-reabilitacionnom-centre   &quot;Пропавший&quot; певец Осин нашелся в реабилитационном центре  65  0   0   234843766   hot\n";
  setTZ(837);
  handleRows(tsv, 10000);   
//-->
</script>

需要解析的数据包含在var tsv。

如何以正确的方式获得它?它具有以下结构:

  

数;数
  字符串字符串编号编号
  字符串字符串编号编号
  等

我尝试使用csv库,split方法。没有成功。

我是如何到达标签的(使用Beautiful Soup):

html = urllib.request.urlopen(url).read()
soup = BeautifulSoup(html, 'html.parser')
scripts = soup.find_all('script')

1 个答案:

答案 0 :(得分:3)

来自网址的数据采用正确的TSV格式,但在您创建问题时,标签似乎已丢失。如建议的那样,您需要从<script>标记中手动提取TSV信息。这可以使用正则表达式完成如下:

import re

script = """<script type="text/javascript"><!--
    function refresh(){
        getRows("online.tsv?page=", "1", 10000);
        updateLiveInternetCounter();
    }
    var article = 0;
    var tsv = "                     251 1503076700\nrussian.rt.com/world/article/420644-postpred-poroshenko-krym-reakciya   «Производитель пустоты»: как в России отреагировали на назначение постпреда Порошенко в Крыму   144 1   0   49407723    \nwww.gazeta.ru/social/news/2017/08/18/n_10452926.shtml На западе Германии неизвестный напал с ножом на людей   87  0   0   190069496   \nria.ru/world/20170818/1500660543.html Совершивший теракт в Барселоне водитель ликвидирован, сообщили СМИ  81  0   0   195367053   \nrussian.rt.com/world/news/420651-nyt-tramp-uvolit-sovetnik    NYT: Трамп уволит советника по стратегическим вопросам  49  2   0   168793493   hot\nwww.iz.ru/634536/2017-08-18/mid-rf-schitaet-predatelstvom-pozitciiu-izrailia-po-muzeiu-sobibor МИД РФ считает предательством позицию Израиля по музею «Собибор»    23  2   -1  234715661   \ne1.ru/news/475053 &quot;С улицы доносились истошные крики&quot;: екатеринбурженка сняла на видео последствия теракта в Барселоне  21  -1  1   197918237   \nvedomosti.ru/technology/articles/2017/08/18/730176-navalnii-razreklamiroval   Навальный разрекламировал приложение Life   17  1   0   218535026   \nwww.gazeta.ru/social/news/2017/08/18/n_10453070.shtml Жертвами атаки неизвестного с ножом в Финляндии стали два человека  16  0   -3  218508102   hot\nrussian.rt.com/sport/news/420618-dzyuba-zenit-arenda   Дзюба может покинуть «Зенит» до закрытия трансферного окна  12  0   -7  192425429   hot\nhardnews.info/business-insider-ssha-grozyat-raznesti-floty-rossii-i-kitaya-v-pux-i-prax/   Business Insider: США грозят разнести флоты России и Китая «в пух и прах»   12  0   0   218803848   \nkaspyinfo.ru/astrahanec-ubil-zhenu-teshhu-i-zastrelilsja-na-glazah-4-letnej-docheri/  Астраханец убил жену, тещу и застрелился на глазах 4-летней дочери  12  0   -12 234822535   hot\nlenta.ru/news/2017/08/18/life_is_life/ СМИ сообщили о закрытии телеканала Life 11  0   -2  193315193   hot\nwww.smolensk2.ru/story.php?id=80338    С завтрашнего дня в Смоленск ограничат движение автотранспорта  11  0   -14 218658636   hot\nwww.mk.ru/social/2017/08/18/druzya-vydvinuli-novuyu-versiyu-smerti-very-glagolevoy.html    Друзья выдвинули новую версию смерти Веры Глаголевой    11  0   0   234743805   \nrussian.rt.com/ussr/news/420647-mid-ukrainskih-tehnologii-kndr    МИД: вопрос украинских технологий в КНДР будут ставить в международных организациях 10  0   0   218535970   \nwww.tass.ru/mezhdunarodnaya-panorama/4490566  Без зарплаты, но с помощниками: первая леди Франции определилась со своим статусом  10  0   1   218597745   \nwww.novorosinform.org/news/73454  Украинские военные расстреляли офицера и покинули позиции   10  0   0   218671838   \nvesti.ru/doc.html?id=2922568  Исполнитель барселонского теракта был убит в Камбрильсе 10  0   0   218775420   \nren.tv/novosti/2017-08-18/tramp-snimaet-s-dolzhnosti-starshego-pomoshchnika-i-glavnogo-stratega   Трамп снимает с должности старшего помощника и главного стратега    9   1   -1  234856496   \nwww.finanz.ru/novosti/aktsii/inostrancy-obyavili-boykot-rossiyskim-akciyam-1002269234 Иностранцы объявили бойкот российским акциям    9   0   1   218615204   \n76.ru/text/newsline/333475534360576.html  Участок трассы М-8 в Ярославской области полностью перекроют    9   2   -10 218520098   hot\nkbereg.info/ubita-uchitel-nitsa-nachal-ny-h-klassov-v-stanitse-pereyaslovskoj/ Убита учительница начальных классов в станице Переясловской | Кубанский берег: Брюховецкая информационно-аналитическая газета, Брюховецкий район    9   0   1   234712792   \nrussian.rt.com/document/59971c3c183561d84d8b4567/amp/420651-nyt-tramp-uvolit-sovetnik NYT: Трамп уволит советника по стратегическим вопросам  8   0   0   218641752   hot\nwww.mk.ru/moscow/2017/08/18/v-moskve-otoshedshiy-spravit-nuzhdu-yunosha-obnaruzhil-dva-trupa.html  В Москве отошедший справить нужду юноша обнаружил два трупа 8   0   -1  218857879   \ntumix.ru/auto/news/27900/v-tyumeni-inspektoryi-gibdd-operativno-dostavili-v-bolnitsu-rebenka-istekayuschego-krovyu    В Тюмени инспекторы ГИБДД оперативно доставили в больницу ребенка, истекающего кровью   8   -1  1   193807259   \nlife.ru/t/новости/1036464 Московская биржа с 21 августа приостановит торги украинской гривной 7   0   1   218721441   \nvz.ru/news/2017/8/18/883380.html  МИД назвал позицию Израиля по «Собибору» «граничащей с предательством»  7   0   0   218596041   hot\nvesti.ru/doc.html?id=2922573   &quot;Бандитский Петербург&quot;: актер Сергей Козик арестован за покушение на убийство 7   0   -15 218790608   hot\nlenta.ru/news/2017/08/18/hryvna/   Московская биржа объявила о приостановке торгов гривной 7   0   0   218519502   \nrussian.rt.com/world/news/420649-zhertvy-terakt-ispaniya-15   Число жертв теракта в Испании возросло до 15    6   0   0   172262407   hot\nwww.mk.ru/social/2017/08/18/znakomyy-evgeniya-osina-nazval-prichinu-ego-pokhishheniya.html Знакомый Евгения Осина назвал причину его &quot;похищения&quot; 6   0   -1  218882064   hot\nvedomosti.ru/finance/news/2017/08/18/730174-ostanovit-grivna-rubl  Московская биржа остановит торги парой гривна-рубль 6   0   0   87615736    \nklg.aif.ru/society/family/zabyli_doch_na_kladbishche_pochemu_roditelyam_net_dela_do_svoih_zhe_detey   Забыли дочь на кладбище. Почему родителям нет дела до своих же детей    6   2   -11 218583454   hot\nwww.gazeta.ru/business/2017/08/18/10837388.shtml   Литва придумала план спасения Украины   6   0   1   218634877   \neg.ru/culture/374339/ Спецборт с телом Веры Глаголевой прилетел в Москву  6   0   -17 218809193   \nria.ru/politics/20170818/1500661787.html  Позиция Израиля по &quot;Собибору&quot; граничит с предательством, уверены в МИД    5   0   -4  218881664   \nwww.tvrain.ru/news/dva_cheloveka_pogibli_v_rezultate_napadenija_v_finskom_gorode_turku-442512/    Два человека погибли в результате нападения в финском городе Турку  5   0   3   234854031   \nhardnews.info/kak-eto-my-umudrilis-vbuxat-v-ukrainu-sto-milliardov-i-ne-poluchit-nichego-semen-bagdasarov/    «Как это мы умудрились вбухать в Украину сто миллиардов — и не получить ничего?», — Семен Багдасаров    5   0   2   218607388   \nwww.rusvesna.su/news/1503075505   В ДНР прокомментировали строительство Украиной газопровода в обход Республики   5   0   4   218603308   \nwww.mk.ru/amp/social/2017/08/18/druzya-vydvinuli-novuyu-versiyu-smerti-very-glagolevoy.html   Друзья выдвинули новую версию смерти Веры Глаголевой    5   0   -1  218552173   \nwww.kaibicy.ru/ru/component/k2/item/14376-nevesta-brosila-buket-v-reku-no-cherez-sekundu-ee-ohvatil-uzhas-kogda-ona-uvidela-etovideo.html Невеста бросила букет в реку. Но через секунду ее охватил ужас, когда она увидела это…Видео - Кайбыч таңнары    4   0   1   218546204   \nwww.gazeta.ru/culture/2017/08/18/a_10837412.shtml Оби-Ван Кеноби наносит ответный удар    4   0   0   218511666   \nren.tv/novosti/2017-08-18/voditelya-furgona-sbivshego-lyudey-v-centre-barselony-likvidirovali Водителя фургона, сбившего людей в центре Барселоны, ликвидировали  4   0   -2  218897064   \ntumix.ru/news/27896/po-puti-v-tyumen-propala-17-letnyaya-mama-s-rebenkom  По пути в Тюмень пропала 17-летняя мама с ребенком  4   0   -10 218809100   hot\nwww.politnavigator.net/v-kieve-raskryli-rot-i-zhdut-ot-evropy-5-milliardov-evro-ezhegodno.html В Киеве раскрыли рот и ждут от Европы 5 миллиардов евро ежегодно    4   0   -1  218667935   \nura.news/articles/1036271876  Отборные слухи о лучших людях России    4   0   -1  218833842   \nvz.ru/society/2017/8/18/883364.html   Коверканье русских имен в странах бывшего СССР действительно стало проблемой    3   -1  2   194242570   \nwww.geo.ru/putesestvia/231415-15-lucsih-graffiti-benksi   15 лучших граффити Бэнкси | Geo - Непознанный мир: Земля    3   0   0   189887590   \nwww.echo.msk.ru/news/2039556-echo.html    \'Новая газета\': Подписавших обращение к генпрокурору Чайке чеченцев сгоняют на \'акцию покаяния\' в центре Грозного   3   0   0   218488956   \nvedomosti.ru/politics/news/2017/08/18/730180-kiev-moskve-notu-protesta    Киев направил Москве ноту протеста из-за поездки Путина в Крым  3   0   -1  48969894    hot\n";
    setTZ(1038);
    handleRows(tsv, 10000);


//-->
</script>>"""

tsv = re.search(r'tsv = "(.*)"', script, re.S).group(1).splitlines()
numbers = tsv[0].split("\t")
data = [row.split('\t') for row in tsv[1:]]

print numbers
print data[0]    # display the first row

这将为您提供以下类型的输出:

['251', '1503076700']
['russian.rt.com/world/article/420644-postpred-poroshenko-krym-reakciya', '\xc2\xab\xd0\x9f\xd1\x80\xd0\xbe\xd0\xb8\xd0\xb7\xd0\xb2\xd0\xbe\xd0\xb4\xd0\xb8\xd1\x82\xd0\xb5\xd0\xbb\xd1\x8c \xd0\xbf\xd1\x83\xd1\x81\xd1\x82\xd0\xbe\xd1\x82\xd1\x8b\xc2\xbb: \xd0\xba\xd0\xb0\xd0\xba \xd0\xb2 \xd0\xa0\xd0\xbe\xd1\x81\xd1\x81\xd0\xb8\xd0\xb8 \xd0\xbe\xd1\x82\xd1\x80\xd0\xb5\xd0\xb0\xd0\xb3\xd0\xb8\xd1\x80\xd0\xbe\xd0\xb2\xd0\xb0\xd0\xbb\xd0\xb8 \xd0\xbd\xd0\xb0 \xd0\xbd\xd0\xb0\xd0\xb7\xd0\xbd\xd0\xb0\xd1\x87\xd0\xb5\xd0\xbd\xd0\xb8\xd0\xb5 \xd0\xbf\xd0\xbe\xd1\x81\xd1\x82\xd0\xbf\xd1\x80\xd0\xb5\xd0\xb4\xd0\xb0 \xd0\x9f\xd0\xbe\xd1\x80\xd0\xbe\xd1\x88\xd0\xb5\xd0\xbd\xd0\xba\xd0\xbe \xd0\xb2 \xd0\x9a\xd1\x80\xd1\x8b\xd0\xbc\xd1\x83', '144', '1', '0', '49407723', '']