Как использовать Python Crawler для сканирования текста второй строки - PullRequest
0 голосов
/ 27 марта 2019

Я пытаюсь сканировать URL во второй строке этого сайта: https://www.cwb.gov.tw/V7/js/HDRadar_1000_n_val.js.

Я использую python для сканирования, но не уверен, стоит ли мне использовать Beautifulsoup или регулярное выражение.

Я использую Python BS4 для сканирования. Но я не знаю, как захватить только вторую строку только с URL. В моей попытке, он захватывает весь сайт.

import requests

import re

from bs4 import BeautifulSoup

res = requests.get('https://www.cwb.gov.tw/V7/js/HDRadar_1000_n_val.js')

soup = BeautifulSoup(res.text,'html.parser')

print(soup)

Ожидаемый:

/V7/observe/radar/Data/HD_Radar/CV1_1000_201903271140.png

Фактический:

var HDRadar_1000_n_val=new Array( new
Array/V7/observe/radar/Data/HD_Radar/CV1_1000_201903271140.png("2019/03/27 11:40","/V7/observe/radar/Data/HD_Radar/CV1_1000_201903271140.png"), new Array("2019/03/27 11:30","/V7/observe/radar/Data/HD_Radar/CV1_1000_201903271130.png"), new Array("2019/03/27 11:20","/V7/observe/radar/Data/HD_Radar/CV1_1000_201903271120.png"), new Array("2019/03/27 11:10","/V7/observe/radar/Data/HD_Radar/CV1_1000_201903271110.png"), new Array("2019/03/27 11:00","/V7/observe/radar/Data/HD_Radar/CV1_1000_201903271100.png"), new Array("2019/03/27 10:50","/V7/observe/radar/Data/HD_Radar/CV1_1000_201903271050.png"), new Array("2019/03/27 10:40","/V7/observe/radar/Data/HD_Radar/CV1_1000_201903271040.png"), new Array("2019/03/27 10:30","/V7/observe/radar/Data/HD_Radar/CV1_1000_201903271030.png"), new Array("2019/03/27 10:20","/V7/observe/radar/Data/HD_Radar/CV1_1000_201903271020.png"), new Array("2019/03/27 10:10","/V7/observe/radar/Data/HD_Radar/CV1_1000_201903271010.png"), new Array("2019/03/27 10:00","/V7/observe/radar/Data/HD_Radar/CV1_1000_201903271000.png"), new Array("2019/03/27 09:50","/V7/observe/radar/Data/HD_Radar/CV1_1000_201903270950.png"), new Array("2019/03/27 09:40","/V7/observe/radar/Data/HD_Radar/CV1_1000_201903270940.png"), new Array("2019/03/27 09:30","/V7/observe/radar/Data/HD_Radar/CV1_1000_201903270930.png"), new Array("2019/03/27 09:20","/V7/observe/radar/Data/HD_Radar/CV1_1000_201903270920.png"), new Array("2019/03/27 09:10","/V7/observe/radar/Data/HD_Radar/CV1_1000_201903270910.png"), new Array("2019/03/27 09:00","/V7/observe/radar/Data/HD_Radar/CV1_1000_201903270900.png"), new Array("2019/03/27 08:50","/V7/observe/radar/Data/HD_Radar/CV1_1000_201903270850.png"), new Array("2019/03/27 08:40","/V7/observe/radar/Data/HD_Radar/CV1_1000_201903270840.png"), new Array("2019/03/27 08:30","/V7/observe/radar/Data/HD_Radar/CV1_1000_201903270830.png"), new Array("2019/03/27 08:20","/V7/observe/radar/Data/HD_Radar/CV1_1000_201903270820.png"), new Array("2019/03/27 08:10","/V7/observe/radar/Data/HD_Radar/CV1_1000_201903270810.png"), new Array("2019/03/27 08:00","/V7/observe/radar/Data/HD_Radar/CV1_1000_201903270800.png"), new Array("2019/03/27 07:50","/V7/observe/radar/Data/HD_Radar/CV1_1000_201903270750.png"), new Array("2019/03/27 07:40","/V7/observe/radar/Data/HD_Radar/CV1_1000_201903270740.png"), new Array("2019/03/27 07:30","/V7/observe/radar/Data/HD_Radar/CV1_1000_201903270730.png"), new Array("2019/03/27 07:20","/V7/observe/radar/Data/HD_Radar/CV1_1000_201903270720.png"), new Array("2019/03/27 07:10","/V7/observe/radar/Data/HD_Radar/CV1_1000_201903270710.png"), new Array("2019/03/27 07:00","/V7/observe/radar/Data/HD_Radar/CV1_1000_201903270700.png"), new Array("2019/03/27 06:50","/V7/observe/radar/Data/HD_Radar/CV1_1000_201903270650.png"), new Array("2019/03/27 06:40","/V7/observe/radar/Data/HD_Radar/CV1_1000_201903270640.png"), new Array("2019/03/27 06:30","/V7/observe/radar/Data/HD_Radar/CV1_1000_201903270630.png"), new Array("2019/03/27 06:20","/V7/observe/radar/Data/HD_Radar/CV1_1000_201903270620.png"), new Array("2019/03/27 06:10","/V7/observe/radar/Data/HD_Radar/CV1_1000_201903270610.png"), new Array("2019/03/27 06:00","/V7/observe/radar/Data/HD_Radar/CV1_1000_201903270600.png"), new Array("2019/03/27 05:50","/V7/observe/radar/Data/HD_Radar/CV1_1000_201903270550.png"), new Array("2019/03/27 05:40","/V7/observe/radar/Data/HD_Radar/CV1_1000_201903270540.png"), new Array("2019/03/27 05:30","/V7/observe/radar/Data/HD_Radar/CV1_1000_201903270530.png"),

...

Ответы [ 2 ]

0 голосов
/ 27 марта 2019

Вот как это сделать:

import requests
import re

res = requests.get('https://www.cwb.gov.tw/V7/js/HDRadar_1000_n_val.js')

pat = re.compile("(/V7/.*?.png)")
p = 0
while True:
    m = pat.search(res.text, p)
    if not m:
        break
    print m.group(1)
    p = m.end()

Это должно быть очень эффективно. Никаких дополнительных копий или разбиений исходных данных, и скомпилированное регулярное выражение - это действительно быстрый способ поиска по данным.

Любое решение, которое дает правильный результат и делает это менее чем за секунду, должно быть в порядке. Вам, вероятно, понадобится гораздо больший список, чтобы это имело значение.

0 голосов
/ 27 марта 2019

Невозможно проанализировать текст с помощью bs4. Итак, составьте список строк, используя split. Затем пройдитесь по каждой строке и разделите разделитель ,, чтобы получить url.

lines = res.text.strip(');\n').split('),\n')
for line in lines:
    print(line.split(',')[-1].strip('"'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...