пытаясь собрать информацию с веб-сайта, который не находится внутри класса, но находится в сценарии как переменная - PullRequest
0 голосов
/ 05 июля 2018

Я пытаюсь почистить сайт. Данные, которые я хочу, НЕ содержатся в div или классе, это переменная push. Я хочу иметь возможность поиска " average180.push ([новая дата ("), затем я хочу получить сразу следующие символы. Например, я хочу получить следующие символы, которые содержатся в '' и назначить это списку (в данном случае это дата). Затем я хочу взять сразу следующий текст, содержащийся в запятых (значение цены), и назначить его списку. После того, как у меня есть эти два списка, я могу сжать их вместе и создайте мою таблицу данных

что у меня сейчас есть

import sys
import requests
from bs4 import BeautifulSoup
url = "http://services.runescape.com/m=itemdb_rs/Raw_shark/viewitem?obj=383"
r = requests.get(url)
soup = BeautifulSoup(r.content, "lxml")
information = soup.find_all("script")
print(information)

1 Ответ

0 голосов
/ 11 июля 2018

Вы можете использовать модуль re для разбора параметров:

import requests
from bs4 import BeautifulSoup
import re
from pprint import pprint

url = "http://services.runescape.com/m=itemdb_rs/Raw_shark/viewitem?obj=383"
r = requests.get(url)
soup = BeautifulSoup(r.content, "lxml")

return_value = []
for s in soup.find_all('script'):
    i = re.findall("average180.push\(\[new Date\('(.*?)'\).*?(\d+).*?(\d+)", s.text)
    for v in i:
        return_value.append(v)

pprint(return_value)

Выход:

[('2018/01/13', '1584', '1389'),
 ('2018/01/14', '1530', '1396'),
 ('2018/01/15', '1512', '1402'),
 ('2018/01/16', '1501', '1408'),
 ('2018/01/17', '1489', '1414'),
 ('2018/01/18', '1483', '1420'),
 ('2018/01/19', '1487', '1427'),
 ('2018/01/20', '1511', '1435'),
 ('2018/01/21', '1516', '1443'),
 ('2018/01/22', '1517', '1449'),
 ('2018/01/23', '1529', '1456'),
 ('2018/01/24', '1527', '1463'),
 ('2018/01/25', '1524', '1470'),
 ('2018/01/26', '1498', '1477'),
 ('2018/01/27', '1491', '1484'),
...etc.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...