我是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文件。
我会考虑使用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)