这是我的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()
对不起,我的英语不好,我希望python的任何专家都能帮助我
答案 0 :(得分:0)
经过一番谷歌搜索和阅读问答,我找到了插入列表的方法(如我之前所说的多个数组)。
基本上,我遵循youtube上的scrapy教程,因此该课程无法以这种方式将数据查询到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))
希望它能提供帮助