Добавить данные в панды с другого сайта - PullRequest
0 голосов
/ 28 сентября 2018

Я пытаюсь добавить данные в Pandas DataFrame с другого URL, однако кажется, что цикл не работает.У кого-нибудь есть идеи, как это сделать.Просто дополнительная информация, сеть изменит URL при следующем использовании номеров.

import requests
import pandas
import numpy
import re
import csv

from bs4 import BeautifulSoup
#### page info ###
for k in range (1,3):
    k=str(k)
    page = requests.get("https://postcode.my/search/?keyword=&state=Kedah&page="+k)
#### check page status (will come 200 if the page is ok) 
    page.status_code
### call Library
    soup = BeautifulSoup(page.content, 'html.parser')
### Find rows 
    rows = soup.find_all(class_="col-lg-12 col-md-12 col-sm-12 col-xs-12")
## create list by append
    L=[]
    for row in rows:
        cols = row.find_all("td")
        cols = [x.text.strip() for x in cols]
        L.append(cols)
## convert to numpy array and reshape to 4 columns 
        cols = ['LOCATION','AREA','STATE','POSTCODE']
        PDTABLE = pandas.DataFrame(numpy.array(L).reshape(-1,4),columns = cols)
        print(PDTABLE)
        ##PDTABLE.to_csv('test.csv')

Спасибо, С наилучшими пожеланиями, Рейли Шахрил

1 Ответ

0 голосов
/ 29 сентября 2018

Когда вы назначаете переменные внутри цикла, они заменяются при запуске второго цикла.

Попробуйте:

import requests
import pandas
import numpy
import re
import csv

L = []

from bs4 import BeautifulSoup
#### page info ###
for k in range (1,3):
    k=str(k)
    page = requests.get("https://postcode.my/search/?keyword=&state=Kedah&page="+k)
#### check page status (will come 200 if the page is ok) 
    page.status_code
### call Library
    soup = BeautifulSoup(page.content, 'html.parser')
### Find rows 
    rows = soup.find_all(class_="col-lg-12 col-md-12 col-sm-12 col-xs-12")
## create list by append

    for row in rows:
        cols = row.find_all("td")
        cols = [x.text.strip() for x in cols]
        L.append(cols)

## convert to numpy array and reshape to 4 columns 
cols = ['LOCATION','AREA','STATE','POSTCODE']
PDTABLE = pandas.DataFrame(numpy.array(L).reshape(-1,4),columns = cols)
PDTABLE.to_csv('test.csv')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...