Вставьте несколько данных Scrapy в MySQL - PullRequest
0 голосов
/ 11 февраля 2019

Это мой код на Python для сканирования новостных данных из https://bpbd.jatengprov.go.id/category/laporan-bencana/'

# -*- coding: utf-8 -*-
import scrapy
class BepeSpider(scrapy.Spider):
name = 'bepe'
allowed_domains = ['bpbd.jatengprov.go.id']
start_urls = ['https://bpbd.jatengprov.go.id/category/laporan-bencana/']
COUNT_MAX = 100
count = 0

def parse(self, response):
    for quote in response.css('div.post'):
        item = {
            'judul': quote.css('h2.post-title > a::text').extract_first(), 
            'teks': quote.css('div.entrytext > p::text').extract_first(), 
            'tag': quote.css('div.up-bottom-border > p.postmetadata > a::text').extract(),
        }
        yield item
        self.count = self.count + 1
        #following pagination link
        next_page_url = response.css('div.alignright > a::attr(href)').extract_first() #dapatkan link untuk selanjutnya

    if (self.count < self.COUNT_MAX):
        next_page_url = response.urljoin(next_page_url)
        yield scrapy.Request(url=next_page_url, callback=self.parse)

Есть ли способ вставить мои сканирующие данные в mysql с таким массивом, как этот?

item = {
        'judul': quote.css('h2.post-title > a::text').extract_first(), 
        'teks': quote.css('div.entrytext > p::text').extract_first(), 
        'tag': quote.css('div.up-bottom-border > p.postmetadata > a::text').extract(),
    }

Я попробовал код ниже, но он не мог вставить какие-либо данные

        conn = Connection()
        mycursor = conn.cursor()
        sql = "insert into berita(judul, isi, tag) values(%s, %s, %s)"

        item = {
            'judul': quote.css('h2.post-title > a::text').extract_first(), 
            'teks': quote.css('div.entrytext > p::text').extract_first(), 
            'tag': quote.css('div.up-bottom-border > p.postmetadata > a::text').extract(),
        }
        val=(item['judul'], item['teks'], item['tag'])
        mycursor.execute(sql,val)
        conn.commit()

Извините за мой плохой английский, и я надеюсь, что любой специалист по питону может помочь мне

1 Ответ

0 голосов
/ 20 февраля 2019

После некоторого поиска в Google и чтения вопросов и ответов я нашел способ вставить список (множественный массив, как я уже говорил).

По сути, я следую учебнику по scrapy из youtube, и урок не приходит таким образом, чтобы запрашивать данные вMySQL.И после того, как я смогу сканировать данные, мне нужно вставить данные

Первое, что мы должны знать, какой у нас сначала тип данных, поэтому я обнаружил, что мой тип данных - список, а не массив.Тогда это мой код, который не найден в учебнике YouTube Scrapy

item1 = quote.css('h2.post-title > a::text').extract_first()
item2 = quote.css('div.entrytext > p::text').extract_first()        
item3 = quote.css('div.up-bottom-border > p.postmetadata > a::text').extract()
items3 = ', '.join(item3)

, тогда запрос ниже

mycursor.execute("INSERT INTO berita (judul, isi, tag) VALUES (%s, %s, %s)", (item1, item2, items3))

Надеюсь, это может помочь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...