извлечение данных значения ключа из данных javascript типа json с помощью bs4 - PullRequest
0 голосов
/ 26 апреля 2019

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

В http://bitly.kr/RWz5x, есть некоторый ключ, называемый encparam, заключенный в getjason из тега javascript, который является 49-м от всех элементов сценария страницы.

Спасибо за вашу помощь заранее.

sam = requests.get('http://bitly.kr/RWz5x')
#html = sam.text
html=sam.content
soup = BeautifulSoup(html, 'html.parser')


scripts = soup.find_all('script')
#your_script = [script for script in scripts if 'encparam' in str(script)][0]
#print(your_script)
#print(scripts)
pattern = re.compile("(\w+): '(.*?)'")
fields = dict(re.findall(pattern, scripts.text))

1 Ответ

2 голосов
/ 26 апреля 2019

Отправьте запрос на следующий URL, который вы можете найти на вкладке источников:

enter image description here


import requests
from bs4 import BeautifulSoup as bs
import re

res = requests.get("https://navercomp.wisereport.co.kr/v2/company/c1010001.aspx?cmp_cd=005930") 
soup = bs(res.content, 'lxml')
r = re.compile(r"encparam: '(.*)'")
data = soup.find('script', text=r).text
encparam = r.findall(data)[0]
print(encparam)

Itскорее всего, вы можете вообще избежать bs4:

import requests
import re
r = requests.get("https://navercomp.wisereport.co.kr/v2/company/c1010001.aspx?cmp_cd=005930") 
p = re.compile(r"encparam: '(.*)'")
encparam = p.findall(r.text)[0]
print(encparam)

Если вы действительно хотите, чтобы в строке была строка encparam:

import requests
import re
r = requests.get("https://navercomp.wisereport.co.kr/v2/company/c1010001.aspx?cmp_cd=005930") 
p = re.compile(r"(encparam: '\w+')")
encparam = p.findall(r.text)[0]
print(encparam)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...