Создание цикла данных через несколько ссылок read_html - PullRequest
0 голосов
/ 06 января 2019

Я новичок в python и пытаюсь очистить таблицу от нескольких страниц сайта.

Прочитав несколько веб-сайтов и просмотрев видео, я сумел написать код, способный вырезать одну страницу и сохранить ее в Excel. URL для разбивки на страницы состоит в том, чтобы просто изменить значение page = x в конце URL. Я попытался и не смог пройти по нескольким страницам и создать фрейм данных.

Соскоб с одной страницы

import pandas as pd
import requests
from bs4 import BeautifulSoup
from tabulate import tabulate

urlbase = "https://www.olx.in/coimbatore/?&page=1"
res = requests.get(urlbase)
soup = BeautifulSoup(res.content,'lxml')
table = soup.find('table', id="offers_table")
df = pd.read_html(str(table), header=1)

df[0].rename(index=str, columns={"Unnamed: 0": "Full Desc", "Unnamed: 2": 
"Detail", "Unnamed: 3": "Price", "Unnamed: 4": "Time"}, inplace = True)
df[0].dropna(thresh=3).to_excel('new.xlsx', sheet_name='Page_2', columns= 
['Detail','Price','Time'], index = False)

Очистка нескольких страниц

import pandas as pd
import requests
from bs4 import BeautifulSoup
from tabulate import tabulate

urlbase = "https://www.olx.in/coimbatore/?&page="

for x in range (4)[1:]:
 res = requests.get(urlbase + str(x))

Затем создайте фрейм данных, комбинируя несколько фреймов данных, созданных на каждой странице. Я не знаю, как создать несколько циклов данных в цикле и объединить их вместе.

1 Ответ

0 голосов
/ 06 января 2019

Вы почти там, вы можете использовать:

frames = []
for x in range (4):
    res = requests.get(urlbase + str(x))
    soup = BeautifulSoup(res.content,'lxml')
    table = soup.find('table', id="offers_table")
    df = pd.read_html(str(table), header=1)
    df[0].rename(index=str, columns={"Unnamed: 0": "Full Desc", "Unnamed: 2": 
        "Detail", "Unnamed: 3": "Price", "Unnamed: 4": "Time"}, inplace = True)
    frames.append(df[0].dropna(thresh=3))
res = pd.concat(frames)
res.to_excel('new.xlsx', sheet_name='Page_2', columns= ['Detail','Price','Time'], index = False)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...