【问题标题】:To make a .xls file from the extracted values from a website从网站提取的值制作 .xls 文件
【发布时间】:2019-08-16 03:54:37
【问题描述】:

我是 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 文件。

【问题讨论】:

    标签: python csv web-scraping beautifulsoup


    【解决方案1】:

    我会考虑使用 pandas 并写入 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 )
    

    你可以用df.to_excel写信给xls

    df.to_excel(r"C:\Users\User\Desktop\Wiki.xls", sheet_name='MyData', index = False, header=False) 
    

    【讨论】:

    • 评论不适用于扩展讨论或调试会话;这个对话是moved to chat
    猜你喜欢
    • 1970-01-01
    • 2021-12-29
    • 1970-01-01
    • 2018-01-14
    • 1970-01-01
    • 1970-01-01
    • 2022-08-15
    • 2023-03-07
    • 1970-01-01
    相关资源
    最近更新 更多