Python 将蜘蛛数据放在 excel 文件中
Python place the spider datas in an excel file
我每天浪费 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)
Excel 可以读取 .csv 文件。如果您有看起来像这样的文本行:"Title1, number1, website1 \n" 您将得到一个看起来像这样的 excel 文件。您可以使用 python 的内置 csv methods or build a pandas DataFrame and use to_csv(这样您就不必担心编写逗号和换行符)。希望对您有所帮助
使用csv当然是一种简单的方法,但也很麻烦。即在使用引号或以您没有参加的方式格式化数据时。喜欢 0:7 默认是白天。
我向您推荐这个可爱的库,我认为它更强大,因此它可以设置数据类型,您可以按名称访问单元格,而无需对逗号进行编号。
我每天浪费 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)
Excel 可以读取 .csv 文件。如果您有看起来像这样的文本行:"Title1, number1, website1 \n" 您将得到一个看起来像这样的 excel 文件。您可以使用 python 的内置 csv methods or build a pandas DataFrame and use to_csv(这样您就不必担心编写逗号和换行符)。希望对您有所帮助
使用csv当然是一种简单的方法,但也很麻烦。即在使用引号或以您没有参加的方式格式化数据时。喜欢 0:7 默认是白天。
我向您推荐这个可爱的库,我认为它更强大,因此它可以设置数据类型,您可以按名称访问单元格,而无需对逗号进行编号。