Веб-скребинг;Невозможно передать все элементы в словаре - PullRequest
0 голосов
/ 01 июня 2018

Я извлекал 9 элементов с веб-сайта.Все было хорошо, но когда я попытался передать эти элементы в словарь, в словарь был сохранен только последний элемент.

import requests
from bs4 import BeautifulSoup
base_url="http://cbcs.fastvturesults.com/student/1sp15me00"
d={}
for page in range(1,10,1):
    r=requests.get(base_url+str(page))
    c=r.content
    soup=BeautifulSoup(c,"html.parser")
    items=soup.find(class_="text-muted")
    if items:
        d["Name"]=items.previous_sibling
        d["USN"]=items.text.replace("(","").replace(")","")
d

Как сохранить все элементы в словаре?

Ответы [ 2 ]

0 голосов
/ 02 июня 2018

Или способ, которым вы начали, может закончиться примерно так:

import requests
from bs4 import BeautifulSoup

base_url="http://cbcs.fastvturesults.com/student/1sp15me00{}"

data = []

for page in range(1,10,1):
    d = {}
    r = requests.get(base_url.format(page))
    soup = BeautifulSoup(r.content,"html.parser")
    items = soup.find(class_="text-muted")
    if items:
        d["Name"] = items.previous_sibling
        d["USN"] = items.text.replace("(","").replace(")","")
        data.append(d)

print(data)

Вывод:

[{'Name': 'Agnello Fernandes A ', 'USN': '1sp15me001'}, {'Name': 'Ajay Kumar V ', 'USN': '1sp15me002'}, {'Name': 'Ajay Rajendiran ', 'USN': '1sp15me003'}, {'Name': 'Amit Singh Yadav ', 'USN': '1sp15me004'}, {'Name': 'Ankit Mahato ', 'USN': '1sp15me006'}, {'Name': 'Antony Levin Fernandez D ', 'USN': '1sp15me008'}, {'Name': 'Ashish S ', 'USN': '1sp15me009'}]
0 голосов
/ 01 июня 2018

Используйте список словарей для хранения ваших данных.

Демонстрация:

import requests
from bs4 import BeautifulSoup
base_url="http://cbcs.fastvturesults.com/student/1sp15me00"
res = []
for page in range(1,10,1):
    r=requests.get(base_url+str(page))
    c=r.content
    soup=BeautifulSoup(c,"html.parser")
    items=soup.find(class_="text-muted")
    if items:
        res.append({"Name": items.previous_sibling, "USN": items.text.replace("(","").replace(")","")})
print(res)

Вывод:

[{'USN': u'1sp15me001', 'Name': u'Agnello Fernandes A '}, {'USN': u'1sp15me002', 'Name': u'Ajay Kumar V '}, {'USN': u'1sp15me003', 'Name': u'Ajay Rajendiran '}, {'USN': u'1sp15me004', 'Name': u'Amit Singh Yadav '}, {'USN': u'1sp15me006', 'Name': u'Ankit Mahato '}, {'USN': u'1sp15me008', 'Name': u'Antony Levin Fernandez D '}, {'USN': u'1sp15me009', 'Name': u'Ashish S '}]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...