账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    用scrapy尝试爬取游戏饰品价格的爬虫 数据没有写入到数据库
    • 2020-01-01 00:00
    • 10
    64
    0

    用scrapy尝试爬取游戏饰品价格的爬虫,在setting文件配置好的情况下(pipeline=300),似乎pipeline不能连接到数据库(因为连简单的插入语句也不能成功执行),而且pycharm没有报错,有人能帮忙看一下哪里有问题吗?

    import pymysql

    class DecoratesPipeline(object):

    def __init__(self):
        self.conn = pymysql.connect(host="127.0.0.1", user="root", password="123456",
                               db='test_food', charset="utf8")
        # 1.建立数据库的连接
        # self.conn = pymysql.connect(host="127.0.0.1", user="root", passwd="123456", db="test_food", charset="utf8")
        # 2.创建一个游标cursor,用来操作表
        self.cursor = self.conn.cursor()
    
    def process_item(self, item, spider):
        # try:
        #     for j in range(len(item['d_name'])):
        #         d_name = item['d_name'][j]
        #         h_name = item['h_name'][j]
        #         # price=item['price']
        #         sell = item['sell'][j]
        #         buy = item['buy'][j]
        #         # 写入数据库
        #         sql = "INSERT INTO dd(sell,buy) VALUE (%s,%s)", (sell, buy)
        #         # self.conn.query(sql)
        #         self.cursor.execute(sql)
        #         # # 4.提交操作
        #         self.conn.commit()
        # except Exception as error:
        #     # 出现错误打印错误日志
        #     log(error)
        sql2 = 'INSERT INTO USER1(name, age) VALUES ("abcx", 23)'
        self.cursor.execute(sql2)
        self.conn.commit()
        return item
    def close_spider(self,spider):
        self.cursor.close()
        self.conn.close()### 问题描述
    

    这个是spiders的程序
    import scrapy
    from decorates.items import DecoratesItem
    from scrapy.http import Request
    from urllib import request
    import re
    import win32api
    import urllib

    class PpigSpider(scrapy.Spider):

    name = 'ppig'
    allowed_domains = ['buff.163.com']
    #start_urls = ['https://buff.163.com/market/goods?goods_id=1#tab=history']
    def start_requests(self):
        yield Request('https://buff.163.com/market/goods?goods_id=1#tab=history',
                       headers={'User-Agent': "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36(KHMTL,like Gecko) Chrome/38.0.2125.122 Safari/537.36 SE 2.X MetaSr 1.0"})
    def parse(self, response):
        item = DecoratesItem()
        item['d_name'] = response.xpath('//h1//text()').extract()[0]
        item['h_name'] = response.xpath('//span/a//text()').extract()[2]
        item['sell'] = response.xpath('//li[@class="selling on"]//text()').extract()[0]
        item['buy'] = response.xpath('//a/span[@id="buy_num"]//text()').extract()[0]
        # pat = '[1-9]\d*\.\d\d|0\.\d*[1-9]\d'
        # data = re.compile(pat).findall(str(response.body))
        item['d_price'] = response.xpath('//td//strong[@class="f_Strong"]"]').extract()[0]
        #//td[@class="t_Left"]//strong
        #//strong//text()
    
        print(item['d_price'])
        # try:
        #items['price'] = re.compile(pat).findall(response + '|$')[0]
        for i in range(2,10):
            nexturl="https://buff.163.com/market/goods?goods_id="+str(i)+"#tab=history"
    
            yield Request(nexturl,callback=self.parse,headers={'User-Agent': "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36(KHMTL,like Gecko) Chrome/38.0.2125.122 Safari/537.36 SE 2.X MetaSr 1.0"})
    
    
    
    1
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 10 元积分
        全部回答
    • 0
    • 莫笑年少江湖梦 普通会员 1楼

      首先,我们需要明确一下你的问题。"数据没有写入到数据库"是什么意思?是说你使用scrapy的爬虫爬取了数据,但是没有将这些数据写入到数据库中,还是说你已经将数据写入到了数据库,但是你的scrapy爬虫没有发现这些数据?

      如果你说的是没有将数据写入到数据库中,那么可能的原因有很多,比如数据库没有开启,数据库中的数据没有被正确地写入,或者你的scrapy爬虫没有正确地写入到数据库。

      如果你说的是scrapy爬虫没有发现数据,那么可能的原因有很多,比如数据库中的数据被删除了,或者你的scrapy爬虫没有正确地搜索数据库。

      如果以上两种情况都不是,那么你可能需要进一步的信息来确定问题的原因。例如,你可以尝试使用scrapy的debug工具来查看你的爬虫在爬取数据时的状态,看看是否可以查看到数据库中的数据。

      同时,你也可以查看你的数据库的设置,看看是否允许爬虫爬取数据库中的数据。如果数据库设置不正确,你可能需要修改数据库的设置,或者使用数据库管理工具(如MySQL Workbench,phpMyAdmin等)来查看和修改数据库中的数据。

      最后,如果你确定你的scrapy爬虫没有写入到数据库,那么可能需要检查你的scrapy项目的配置,看看是否有设置阻止scrapy爬虫爬取数据库中的数据。例如,你可以查看scrapy项目的settings.py文件,看看是否有设置阻止scrapy爬虫爬取数据库中的数据。如果有,你可能需要修改这个设置。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部