我在使用Scrapy将抓取的数据导出到本地MySQL数据库时遇到问题。
无论如何,我尝试使用Scrapy制作一个网络爬虫,到目前为止它实际上从所需的网站上抓取了所需的数据,尽管我无法将数据导出到本地MySQL数据库。我一直在阅读Mysql连接器的文档,但是他们的例子让我感到困惑(http://dev.mysql.com/doc/connector-python/en/connector-python-example-cursor-transaction.html)。我也在Google上搜索过,希望能找到解决方案,但我找到的所有结果都使用MySQLdb,我想使用MySQL连接器。
这是我在pipelines.py中的代码
from scrapy.extensions import DropItem
import mysql.connector
from mysql.connector import errorcode
cnx = mysql.connector.connect(user='user', password='pwd', host='localhost', database='ftdb2')
cursor = cnx.cursor()
TABLES = {}
TABLES['fttable2'] = (
"CREATE TABLE 'fttable2' ("
" 'id' int(11) NOT NULL AUTO_INCREMENT,"
" 'nr' varchar(100),"
" 'titel' varchar(9999),"
" 'forslagsstiller' varchar(999),"
" 'ministeromraade' varchar(100),"
" 'udvalg' varchar(100),"
" 'status' varchar(100),"
" 'samling' varchar(100),"
" PRIMARY KEY ('id')"
") ENGINE=InnoDB")
add = ("INSERT INTO fttable2 " "(nr) " "VALUES (item['nr'])")
cursor.execute(add)
cnx.commit()
cursor.close()
cnx.close()
class tutorial2Pipeline(object):
def process_item(self, item, spider):
return item
当我去终端时 - > mysql - >并写:describe fttable2;
,我可以看到它甚至没有创建表(我确保授予用户完全权限)。
这是spider.py代码(基于Scrapy教程中的代码构建):
from scrapy.spider import Spider
from scrapy.selector import Selector
from tutorial2.items import FTItem
class DmozSpider(Spider):
name = "dmoz"
allowed_domains = ["ft.dk"]
start_urls = ["http://www.ft.dk/Dokumenter/Vis_efter_type/Beslutningsforslag.aspx?session=&caseStatus=-1&ministerArea=-1&committee=&proposedBy=1&startDate=20110915&endDate=20140421&dateRelatedActivity=100242%2f200049&sortColumn=&sortOrder=&startRecord=&totalNumberOfRecords=&numberOfRecords=999&pageNr=#dok"]
def parse(self, response):
sel = Selector(response)
item = FTItem()
# Extract title
item['nr'] = sel.xpath('/html/body/form/div[3]/div/div[2]/div[5]/div/div/table/tbody/tr/td[1]/text()').extract()
return item
我不确定这是否正确。
答案 0 :(得分:-1)
Scrapy将调用已启用的管道函数,但是您的mysql代码片段不会在任何管道函数的范围内编写。