根据网站提取的值制作.xls文件

时间:2019-03-25 20:14:40

标签: python csv web-scraping beautifulsoup

我绝对是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 :(得分:0)

我会考虑使用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)