Сделать файл .xls из извлеченных значений с сайта - PullRequest
1 голос
/ 25 марта 2019

Я абсолютный новичок в программировании на Python, и это тоже Web Scraping.Я пытался почистить веб-сайт для практических целей.

Я использовал модуль BeautifulSoup и Requests.

Код приведен ниже:

import requests
import xlwt
from bs4 import BeautifulSoup
from csv import writer

response=requests.get("https://www.wikipedia.org/")
wb=xlwt.Workbook()
ws=wb.add_sheet("Test")
soup=BeautifulSoup(response.content,"html.parser")
links=soup.find_all("strong")
for link in links:
    lang=link.get_text()
    for i in len(lang):
        ws.write(i,i,lang)
        wb.save("Wiki.xls")

Я очистилзаголовки с веб-страницы, но во время записи в файл Excel отображается следующая ошибка:

File "C:/Users/laptop/PycharmProjects/myproject/srapingex1.py", line 16, in <module>
    for i in len(str(lang)):
TypeError: 'int' object is not iterable

Основная проблема заключается в том, что синтаксис ws.write(row,column,data) требует адреса строки, адреса столбцаи данные.

Поскольку я не знаю предопределенного размера списка, то как можно передать строку, адрес столбца.

Пожалуйста, скажите, если я делаю код неправильно, и любезно предложите, если есть какой-либо способ записать извлеченные элементы в файл .xls.

1 Ответ

0 голосов
/ 26 марта 2019

Я хотел бы рассмотреть возможность использования панд и написать в CSV. Вы также можете сохранить языковой формат

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

res = requests.get('https://www.wikipedia.org/')
soup = bs(res.content, 'lxml')
items  = [item.text for item in soup.select('strong')][1:-1]
df = pd.DataFrame(items, columns = ['Languages']) 
df.to_csv(r'C:\Users\User\Desktop\Wiki.csv', sep=',', encoding='utf-8-sig',index = False )

Вы можете написать в xls с df.to_excel

df.to_excel(r"C:\Users\User\Desktop\Wiki.xls", sheet_name='MyData', index = False, header=False) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...