gpt4 book ai didi

python - 使用 Scrapy 从抓取的数据中构造 DataFrame

转载 作者:行者123 更新时间:2023-12-01 11:20:05 24 4
gpt4 key购买 nike

我在从抓取的数据中构建 csv 类型的数据文件时遇到问题。我已经设法从表中抓取数据,但是在编写它时,我几天都做不到。我正在使用项目并尝试将其写入 Pandas 数据框。我正在使用项目列表。

import scrapy
from wiki.items import WikiItem
import pandas as pd

class Spider(scrapy.Spider):

name = "wiki"
start_urls = ['https://datatables.net/']

def parse(self, response):

items = {'Name':[], 'Position':[], 'Office':[], 'Age':[],
'Start_Date':[],'Salary':[]}

trs = response.xpath('//table[@id="example"]//tr')
name = WikiItem()
pos = WikiItem()
office = WikiItem()
age = WikiItem()
start_data = WikiItem()
salary = WikiItem()

name['name'] = trs.xpath('//td[1]//text()').extract()
pos['position'] = trs.xpath('//td[2]//text()').extract()
office['office'] = trs.xpath('//td[3]//text()').extract()
age['age'] = trs.xpath('//td[4]//text()').extract()
start_data['start_data'] = trs.xpath('//td[5]//text()').extract()
salary['salary'] = trs.xpath('td[6]//text()').extract()

items['Name'].append(name)
items['Position'].append(pos)
items['Office'].append(office)
items['Age'].append(age)
items['Start_Date'].append(start_data)
items['Salary'].append(salary)

x = pd.DataFrame(items, columns=['Name','Position','Office','Age',
'Start_Date','Salary'])

yield x.to_csv("r",sep=",")

从这段代码中我得到的是这样的;

,Name,Position,Office,Age,Start_Date,Salary
0,"{'name': [u'Tiger Nixon',
u'Garrett Winters',
u'Ashton Cox',
u'Cedric Kelly',
u'Airi Satou',
u'Brielle Williamson',
u'Herrod Chandler',

我得到了名称列,但我得到了 59 次。例如,我有第一行“Tiger Nixon”59 次。我也得到了 59 次位置列,依此类推。而且抓取的数据也不是很好。我是scrapy的新手,愿意接受任何帮助或建议。提前致谢!

编辑:我的 items.py 是这样的;

import scrapy


class WikiItem(scrapy.Item):


name = scrapy.Field()
position = scrapy.Field()
office = scrapy.Field()
age = scrapy.Field()
start_data = scrapy.Field()
salary = scrapy.Field()

最佳答案

好的,我不能评论也不能测试你的代码,因为我没有 WikiItem 的定义。但是让我们迭代这个响应,好吗?你能检查一下你用这段代码得到了什么吗?

class Spider(scrapy.Spider):

name = "wiki"
start_urls = ['https://datatables.net/']

def parse(self, response):

trs = response.xpath('//table[@id="example"]//tr')

if trs:
items = []
for tr in trs:
print tr.xpath('td[2]//text()').extract()
item = {
"Name": tr.xpath('td[1]//text()').extract(),
"Position": tr.xpath('td[2]//text()').extract(),
"Office": tr.xpath('td[3]//text()').extract(),
"Age": tr.xpath('td[4]//text()').extract(),
"Start_Date": tr.xpath('td[5]//text()').extract(),
"Salary": tr.xpath('td[6]//text()').extract()
}
items.append(item)


x = pd.DataFrame(items, columns=['Name','Position','Office','Age',
'Start_Date','Salary'])

yield x.to_csv("r",sep=",")

关于python - 使用 Scrapy 从抓取的数据中构造 DataFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44938888/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com