Home > OS >  How to get title and description on every detail page when scraping data using scrapy python
How to get title and description on every detail page when scraping data using scrapy python

Time:10-04

How to get the title and description on every detail page regarding the topic of market from this link: enter image description here

I want the results of the data scraping in the form of a dataframe contains title, description per detail page.

This is my current code, and now i confused to scraped per detail page for get the description.

from ast import parse
import scrapy


class CnbcSpider(scrapy.Spider):
    name = 'cnbc'
    allowed_domains = ['cnbcindonesia.com']
    start_urls = ['https://www.cnbcindonesia.com/market/indeks/5']

    def parse(self, response):
        for berita in response.xpath("//article"):
            the_title= berita.xpath("./a/div[@class='box_text']/h2/text()").get()
            the_category= berita.xpath("./a/div[@class='box_text']/span/span/text()").get()
            link = berita.xpath("./a/@href").get()
            # yield{
            #     'Title_page': the_title,
            #     'category_page': the_category,
            #     'link': link 
            # }
            yield scrapy.Request(url=link, callback=self.parse_detail_page)

    def parse_detail_page(self, response):
        title = response.xpath("//h1/text()']").get()
        yield{
                'Title': title,
            }

CodePudding user response:

As you started a scrapy project, here is what you need to do:

Make sure your items.py file looks like this:

import scrapy


class CnbcindoItem(scrapy.Item):
    # define the fields for your item here like:
    # name = scrapy.Field()
    title = scrapy.Field()
    url = scrapy.Field()
    article = scrapy.Field()
    author = scrapy.Field()
    timestamp = scrapy.Field()

Then your spider file (which you generate with scrapy genspider ...) should look like this:

import scrapy
from cnbcindo.items import CnbcindoItem


class CnbcspiderSpider(scrapy.Spider):
    name = 'cnbcspider'
    allowed_domains = ['cnbcindonesia.com']
    start_urls = ['https://www.cnbcindonesia.com/market/indeks/5/1?date=']

    def parse(self, response):
        news_cards = response.xpath('//ul[starts-with(@class, "list media_rows")]//article')
        for n in news_cards:
            news_link = n.xpath('.//a/@href').extract()[0]
            yield response.follow(url=news_link, callback = self.parse_article)
        next_page = response.xpath('//i[@]/parent::a/@href').get()
        if next_page and next_page !="#":
            yield response.follow(next_page, callback = self.parse)
    
    def parse_article(self, response):

        items  = CnbcindoItem()
        
        items['title'] = response.xpath('//div[@]//h1/text()').get()
        items['timestamp'] = response.xpath('//div[@]//div[@]/text()').get()
        items['author'] = response.xpath('//div[@]//div[@]/text()').get()
        items['article'] = ' '.join([x.strip() for x in response.xpath('//div[@]//p/text()').extract()])
        items['url'] = response.request.url

        yield items

You can also add a custom DEFAULT_REQUEST_HEADERS in your settings.py file, something like:

DEFAULT_REQUEST_HEADERS = {
  'Accept': 'text/html,application/xhtml xml,application/xml;q=0.9,*/*;q=0.8',
  'Accept-Language': 'en',
  'User-Agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36"
}

Observe how the next page is obtained from the forward button, and it will be followed as needed, until that button is no more.

Now your spider should be functional, and ready to follow all those 1400 pages with news from that section. Run it in terminal, with scrapy crawl cnbcspider -o cnbcindonews.json, to save the results in a JSON file. If you are looking at saving the results in a database, you need to setup a pipeline and a database - see documentation.

The resulting json file will look like this:

[
{"title": "Ekonom: Inflasi Tembus 5,95%, BI Rate Akhir Tahun Bisa ke 5%", "timestamp": "03 October 2022 14:43", "author": "CNBC Indonesia TV, CNBC Indonesia", "article": "VP for Industry and Regional Research Bank Mandiri, Dendi Ramdani menilai pelemahan Rupiah yang terus berlanjut dan menembus Rp 15.285/USD sebagai respon wajar dari pasar imbas rilis inflasi September yang mencapai mencapai 1,71% (mtm) atau 5,95% (yoy). Dendi melihat potensi penguatan Rupiah ditopang kondisi fundamental RI yang masih baik dan mata uang Garuda bisa ke kisaran di bawah Rp 15.000 per USD. Seperti apa ekonom melihat arah pelemahan Rupiah? Dan bagaimana arah kebijakan BI terhadap kondisi ini? Selengkapnya simak dialog Anneke Wijaya dengan VP for Industry and Regional Research Bank Mandiri, Dendi Ramdani dan Wakil Ketua Asosiasi Pertekstilan Indonesia (API), Ian Syarif dalam Power Lunch, CNBC Indonesia (Senin, 03/10/2022)", "url": "https://www.cnbcindonesia.com/market/20221003135328-19-376796/ekonom-inflasi-tembus-595-bi-rate-akhir-tahun-bisa-ke-5"},
{"title": "Perhatian! e-Commerce Djarum Group Blibli Siap IPO", "timestamp": "03 October 2022 15:44", "author": "Romys Binekasri, CNBC Indonesia", "article": "- Otoritas Jasa Keuangan (OJK) buka suara soal rencana perusahaan rintisan atau Startup\u00a0e-commerce milik Djarum\u00a0Group, Blibli yang akan melakukan penawaran umum saham perdana atau initial public offering (IPO) Blibli. Kepala Eksekutif Pengawas Pasar Modal OJK Inarno Djajadi mengungkapkan, Blibli sebenarnya telah memasukkan pernyataan pendaftaran cukup lama. Namun, rencana tersebut tertunda karena faktor kondisi tertentu. \"Blibli memang sudah masuk dalam pernyataan pendaftaran sudah cukup lama, dan mungkin karena melihat situasi kondisi sempat itu ditunda untuk IPO,\" ujarnya dalam konferensi pers secara virtual, Senin (3/10/2022). ADVERTISEMENT SCROLL TO RESUME CONTENT Menurutnya, keputusan penundaan rencana aksi korporasi suatu perusahaan dalam melepas sahamnya ke publik tergantung dari faktor eksternal. Namun, Blibli kembali memasukkan pernyataannya beberapa waktu lalu. \"Namun beberapa waktu lalu kelihatannya memasukkan lagi,\" ucapnya. Sayangnya, Inarno tidak dapat menyebut terkait kisaran harga saham IPO Blibli. Sebab, hal tersebut tergantung dari proses book building. \"Berapa besarnya dan juga harga IPO-nya itu menunggu dari book building-nya. Jadi kita nggak bisa memasukkan berapa besarnya, berapa harganya itu tergantung dari book building,\" pungkasnya.", "url": "https://www.cnbcindonesia.com/market/20221003153829-17-376840/perhatian-e-commerce-djarum-group-blibli-siap-ipo"},
{"title": "Breaking News: Minyak Mentah Memanas, Harganya Melejit 5%!", "timestamp": "03 October 2022 15:07", "author": "Robertus Andrianto, CNBC Indonesia", "article": "Harga minyak mentah dunia melejit nyaris 5% lebih. Penyebabnya adalah potensi pengurangan produksi oleh OPEC . Pada Senin (10/3/2022) pukul 14.58 WIB harga minyak jenis atau West Texas Intermediate (WTI) melonjak 4,7% ke US$83,22 per barel. Sedangkan\u00a0mentah Brent tercatat US$88,96 per barel, naik 1,15%   ADVERTISEMENT SCROLL TO RESUME CONTENT Perkumpulan negara-negara produsen minyak OPEC  akan mempertimbangkan pengurangan produksi minyak lebih dari satu juta barel per hari (bph) minggu depan, menurut sumber OPEC mengatakan kepada (2/10/2022). Ini akan menjadi langkah terbesar sejak pandemi COVID-19 ke mengatasi kelemahan pasar minyak. Pertemuan OPEC  akan berlangsung pada 5 Oktober mendatang. Penurunan harga minyak dan bulan-bulan volatilitas pasar yang parah yang mendorong produsen utama OPEC , Arab Saudi, untuk mengatakan bahwa kelompok tersebut dapat memangkas produksi. OPEC , yang menggabungkan negara-negara OPEC dan sekutunya seperti Rusia, telah menolak menaikkan produksi untuk menurunkan harga minyak meskipun ada tekanan dari konsumen utama, termasuk Amerika Serikat, untuk membantu ekonomi global. Pekan lalu, sebuah sumber mengatakan Moskow berharap OPEC  dapat memotong 1 juta bph atau 1% dari pasokan global. Itu akan menjadi pemotongan terbesar sejak 2020 ketika OPEC  mengurangi produksi dengan rekor 10 juta bph karena permintaan turun karena pandemi Covid-19. Kelompok ini menghabiskan dua tahun berikutnya untuk memecahkan rekor tersebut. Analis dan pengamat OPEC seperti UBS dan JP Morgan telah menyarankan pemotongan sekitar 1 juta bph sehingga dapat membantu menahan penurunan harga. \"Minyak US$90 tidak dapat dinegosiasikan untuk kepemimpinan OPEC , oleh karena itu mereka akan bertindak untuk menjaga harga dasar ini,\" kata Stephen Brennock dari pialang minyak PVM.", "url": "https://www.cnbcindonesia.com/market/20221003145744-17-376821/breaking-news-minyak-mentah-memanas-harganya-melejit-5"},
{"title": "Rupiah Tembus Rp 15.300/US$, Momok Ketakutan Jokowi Nyata?", "timestamp": "03 October 2022 15:13", "author": "Putu Agus Pransuamitra, CNBC Indonesia", "article": "Nilai tukar rupiah melemah melawan dolar Amerika Serikat (AS) pada perdagangan Senin (3/10/2022) hingga menembus Rp 15.300/US$. Inflasi yang semakin meninggi memberikan tekanan bagi Mata Uang Garuda. Melansir data Refinitiv, rupiah membuka perdagangan dengan melemah 0,03% ke Rp 15.230/US$. Setelahnya rupiah terpuruk hingga Rp 15.305/US$, merosot 0,52%. Di penutupan perdagangan, rupiah berada di Rp 15.300/US$, melemah 0,49% di pasar spot. Level tersebut merupakan yang terlemah\u00a0sejak 29 April 2020. ADVERTISEMENT SCROLL TO RESUME CONTENT Badan Pusat Statistik (BPS) hari ini juga mengumumkan jika inflasi secara tahunan ( /yoy) pada September menembus 5,95%. \"Inflasi ini tertinggi sejak Desember 2014,\" kata Kepala BPS Margo Yuwono dalam konferensi pers, Senin (3/10/2022). Inflasi tinggi pada September juga sesuai dengan perkembangan inflasi di era Presiden Joko Widodo atau Jokowi Sejak menjabat presiden pada Oktober 2014 hingga Agustus 2022, inflasi Indonesia hanya dua kali melewati 1% yakni pada 1,50% (mtm) pada November 2014 dan 2,46% (mtm) pada Desember 2014. Inflasi periode tersebut melonjak setelah Jokowi menaikkan harga BBM pada 18 November 2014.Setelah periode inflasi tinggi November dan Desember 2014, Indonesia tidak pernah mengalami inflasi di atas 1% hingga Agustus tahun ini. Inflasi tinggi merupakan masalah utama di dunia saat ini. Presiden Jokowi berulangkali mengungkapkan bahwa inflasi adalah momok terbesar saat ini oleh semua negara di dunia. Pasalnya, banyak negara di dunia yang tersandung akan inflasi tinggi. Inflasi ini dipicu oleh kenaikan harga pangan hingga energi, dan perang Rusia-Ukraina yang tak pasti kapan berakhir. \"Pertama yang ingin saya sampaikan momok pertama semua negara saat ini inflasi, inflasi semua negara biasanya hanya 1% sekarang 8%, lebih dari 10% dan bahkan ada lebih dari 80 persen, ada 5 negara,\" kata Jokowi saat Pengarahan Presiden kepada seluruh Menteri/Kepala Lembaga, Kepala Daerah, Pangdam dan Kapolda di JCC, Jakarta, Kamis (29/9/2022). Inflasi yang tinggi memang bisa menimbulkan masalah besar. Daya beli masyarakat bisa tergerus yang pada akhirnya menekan pertumbuhan ekonomi. Jika berlangsung lama, maka risiko stagflasi pun menghantui. Rilis data inflasi tersebut menutupi kabar baik dari dalam negeri. S&P Global hari ini melaporkan aktivitas manufaktur Indonesia yang dilihat dari purchasing manager's index (PMI) mengalami peningkatan signifikan menjadi 53,7 September lalu, dari bulan sebelumnya 51,7. PMI menggunakan angka 50 sebagai ambang batas. Di atasnya adalah ekspansi, di bawahnya berarti kontraksi. Sektor manufaktur Indonesia kini sudah berekspansi dalam 13 bulan beruntun, dan menjadi kabar baik saat negara-negara lain terutama di Barat menghadapi isu resesi. \"Survei terbaru konsisten dengan perkembangan terkuat kesehatan sektor manufaktur Indonesia sejak Januari. Kondisi demand yang kuat membantu membawa pesanan baru ke level tertinggi dalam hampir satu tahun terakhir,\" kata Laura Denman, ekonom di S&P Global Market Intelligence.", "url": "https://www.cnbcindonesia.com/market/20221003150834-17-376826/rupiah-tembus-rp-15300-us--momok-ketakutan-jokowi-nyata"},
{"title": "Pasar Obligasi 'Happy' dengan Data Inflasi", "timestamp": "03 October 2022 14:10", "author": "Muhammad Maruf, CNBC Indonesia", "article": "Pasar surat berharga negara (SBN) merespon positif rilis data inflasi bulan September yang diumumkan Badan Pusat Statistik pukul 11.00 WIB tadi. Data inflasi yang sesuai ekspektasi pasar itu membuat investor berburu seri tenor panjang, merefleksikan kepercayaan atas prospek ekonomi ke depan. ADVERTISEMENT SCROLL TO RESUME CONTENT", "url": "https://www.cnbcindonesia.com/market/20221003140642-17-376802/pasar-obligasi-happy-dengan-data-inflasi"},
{"title": "Efek Rupiah Melemah,  Biaya Produksi Industri Tekstil Naik 5%", "timestamp": "03 October 2022 15:06", "author": "CNBC Indonesia TV, CNBC Indonesia", "article": "Asosiasi Pertekstilan Indonesia (API) mencatat adanya kenaikan biaya energi 10% imbas penyesuaian harga BBM serta kenaikan biaya pembelian bahan baku yang disebabkan pelemahan Rupiah. Diproyeksi kondisi ini bisa mendorong kenaikan biaya produksi 5% serta beban kenaikan UMR 2023 sehingga harga jual bisa meningkat 7-8%. Seperti apa dampak kenaikan harga energi hingga pelemahan Rupiah terhadap industri tekstil? Selengkapnya simak dialog Anneke Wijaya dengan VP for Industry and Regional Research Bank Mandiri, Dendi Ramdani dan Wakil Ketua Asosiasi Pertekstilan Indonesia (API), Ian Syarif dalam Power Lunch, CNBC Indonesia (Senin, 03/10/2022)", "url": "https://www.cnbcindonesia.com/market/20221003135507-19-376797/efek-rupiah-melemah-biaya-produksi-industri-tekstil-naik-5"},
{"title": "Sederet PR Indonesia Hadapi Awan Gelap Ekonomi Global 2023 ", "timestamp": "03 October 2022 15:52", "author": "CNBC Indonesia TV, CNBC Indonesia", "article": "- Presiden Jokowi mengungkapkan kekhawatirannya terhadap potensi ekonomi global di 2023 akan semakin gelap di tengah gonjang-ganjing dunia imbas kenaikan inflasi dan suku bunga yang diikuti oleh krisis energi dan pangan dunia. Ekonom Bank Mandiri, Irman Faiz memandang kondisi fundamental ekonomi Indonesia diharapkan cukup kuat menghadapi goncangan global ditopang kinerja ekspor dan surplus neraca dagang. seperti apa potensi RI menghadapi stagflasi dan resesi menghadapi ekonomi gelap 2023? Selengkapnya simak dialog Savira Wardoyo dengan Ekonom INDEF, Eisha Maghfiruha serta Ekonom IPB, Aristo Purboadji dan Ekonom Bank Mandiri, Faisal Rachman di Profit, Indonesia (Senin, 03/10/2022)", "url": "https://www.cnbcindonesia.com/market/20221003122755-19-376765/sederet-pr-indonesia-hadapi-awan-gelap-ekonomi-global-2023"},
{"title": "Inflasi Nyaris Sentuh 6%, IHSG Merana Lagi", "timestamp": "03 October 2022 15:49", "author": "Chandra Dwi Pranata, CNBC Indonesia", "article": "tersebut ditutup melemah 0,44% ADVERTISEMENT SCROLL TO RESUME CONTENT", "url": "https://www.cnbcindonesia.com/market/20221003153933-17-376835/inflasi-nyaris-sentuh-6-ihsg-merana-lagi"},
{"title": "Era Suku Bunga Tinggi, Saham Properti Ini Malah Naik 34,88%", "timestamp": "03 October 2022 13:17", "author": "Aulia Mutiara Hatia Putri, CNBC Indonesia", "article": "Indeks Harga Saham Gabungan (IHSG) berakhir di melemah pada penutupan perdagangan sesi I Senin (3/10/2022) pasca rilis data inflasi Indonesia periode September melonjak dan mencapai angka tertinggi sejak Desember 2014. Nilai perdagangan tercatat turun ke Rp 6,03 triliun dengan melibatkan lebih dari 12 miliar saham yang berpindah tangan 733 kali. ADVERTISEMENT SCROLL TO RESUME CONTENT Sementara, Mayoritas", "url": "https://www.cnbcindonesia.com/market/20221003120820-17-376753/era-suku-bunga-tinggi-saham-properti-ini-malah-naik-3488"},
[...]

Scrapy documentation can be found here: https://docs.scrapy.org/en/latest/

  • Related