我绝对是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文件。
答案 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)