Как сохранить данные каждой страницы в CSV - PullRequest
0 голосов
/ 31 декабря 2018

Я работаю над проектом очистки, где я пытаюсь собрать информацию с 13 страниц.Структура страницы идентична, изменяются только URL-адреса.

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

Я уверен, что что-то упустил, но не могу понять, что именно.Спасибо!

Я использую Python 3.7 и BeautifulSoup для очистки.

from urllib.request import urlopen as uReq
from bs4 import BeautifulSoup as soup

pages = [str(i) for i in range (1,14)]

for page in pages:

    my_url ='Myurl/=' + page

    uClient = uReq(my_url)
    page_html = uClient.read()
    uClient.close()

    page_soup = soup(page_html, "html.parser")
    containers = page_soup.findAll("table", {"class":"hello"})
    container = containers[0]

    filename = "Full.csv"
    f = open(filename, "w")

    headers= "Aa, Ab, Ac, Ad, Ba, Bb, Bc, Bd\n"
    f.write(headers)

    for container in containers:

        td_tags = container.find_all('td')
        A = td_tags[0]
        B=td_tags[2]

        Aa = A.a.text   
        Ab = A.span.text
        Ac = A.find('span', attrs = {'class' :'boxes'}).text.strip()
        Ad = td_tags[1].text

        Ba = B.a.text   
        Bb = B.span.text
        Bc = B.find('span', attrs = {'class' :'boxes'}).text.strip()
        Bd = td_tags[3].text

        print("Aa:" + Aa)
        print("Ab:" + Ab)
        print("Ac:" + Ac)
        print("Ad:" + Ad)
        print("Ba:" + Ba)
        print("Bb:" + Bb)
        print("Bc:" + Bc)
        print("Bd:" + bd)


        f.write(Aa + "," + Ab + "," + Ac.replace(",", "|") + "," + Ad + "," + Ba + "," + Bb + "," + Bc.replace(",", "|") + "," + Bd + "\n")

    f.close()

Редактировать * Также, если у кого-то есть хорошая идея, как узнать и записать, с какого номера страницы находится каждый контейнер, это также будет полезно.Еще раз спасибо!

1 Ответ

0 голосов
/ 31 декабря 2018

Сделайте это, чтобы добавить файл, а не перезаписывать его:

with open(filename, "a") as myfile:
    myfile.write(Aa + "," + Ab + "," + Ac.replace(",", "|") + "," + Ad + "," + Ba + "," + Bb + "," + Bc.replace(",", "|") + "," + Bd + "\n")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...