我每天丢失1小时来对来自网站的信息进行分类,因此我尝试构建一个将从网站获取数据的python蜘蛛,并将其自动归类为excel文件。
我已经构建了部分来获取数据,但我不知道如何使用我正在使用的代码将它们附加到excel文件中。
这是代码:
import requests
from bs4 import BeautifulSoup
import xlsxwriter
def spider_list(max_pages):
page = 2
while page < max_pages:
url = 'http://yellow.local.ch/fr/q/Morges/Bar.html?page=' + str(page)
source_code = requests.get(url)
plain_text = source_code.text
soup = BeautifulSoup(plain_text, 'html.parser')
for link in soup.findAll('a', {'class':'details-entry-title-link'}):
href = link.get('href')
spider_data(href)
page += 1
def spider_data(item_url):
source_code = requests.get(item_url)
plain_text = source_code.text
soup = BeautifulSoup(plain_text, 'html.parser')
for items in soup.findAll('h1'):
print("\n" + items.string)
for num in soup.findAll('a', {'class':'number'}):
print(num.string)
for mail in soup.findAll('a', {'class':'redirect'}):
print(mail.string)
spider_list(3)
每组信息都应该展示,这里有一个例子:
我该怎么办? -----------编辑-----------
好的,现在我创建了代码的最后一部分,但它不起作用?
def spider_data(item_url):
source_code = requests.get(item_url)
plain_text = source_code.text
soup = BeautifulSoup(plain_text, 'html.parser')
datas = []
for items in soup.findAll('h1'):
datas.append(items.string)
for num in soup.findAll('a', {'class':'number'}):
datas.append(num.string)
for mail in soup.findAll('a', {'class':'redirect'}):
datas.append(mail.string)
csv_create(datas)
def csv_create(data):
myfile = open('mydatas.csv', 'wb')
wr = csv.writer(myfile, quoting=csv.QUOTE_ALL)
wr.writerow(data)
答案 0 :(得分:1)
Excel可以读取.csv文件。如果您的文本行如下所示:“Title1,number1,website1 \ n”您将获得一个类似的excel文件。您既可以使用python的内置csv methods,也可以构建一个pandas DataFrame并使用to_csv(这样可以省去编写逗号和换行符的麻烦)。希望这有帮助
答案 1 :(得分:0)
使用csv当然是一种简单的方法,但可能很麻烦。即当使用引号或获取数据时,你没有参加。默认情况下像0:7一样白天。
我推荐你这个我认为更健壮的甜库,因此它可以设置数据类型,你可以按名称访问单元格,而不用逗号编号。