iT邦幫忙

0

爬取五頁新聞標題,但匯出至CSV檔時只匯出第五頁的標題?

目前在練習爬蟲抓取新聞標題,並匯出CSV
問題點是此新聞頁面有5頁,我迴圈有抓到5頁的標題與網址,
但是匯出成csv檔時,卻只匯出第五頁的標題?

#爬取聯合新聞網頁面
#問題:動態頁面,雖然有取得網址,但只能得到第五頁的標題
#問題二:code40中的titleLinke為目的網址,需再加上link3的網址才是完整的網頁,但不知道如何合併link3+titleLink

import requests
import bs4
from openpyxl import Workbook


wb = Workbook()
ws = wb.active

list = ["title","view","link"]
ws.append(list)

header = {
    "user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.82 Safari/537.36"
}


link1 = "https://udn.com/api/more?page="
link2= "&id=&channelId=1&cate_id=99&type=breaknews&totalRecNo=15638"
link3 = "https://udn.com/"

for page in range(1,5):                     
    url = link1+str(page)+link2
    print(url)


r = requests.get(url, headers=header)


items = r.json()

for item in items["lists"]:
    headline = []
    #headline.append(item["date"])
    headline.append(item["title"])
    headline.append(item["view"])
    headline.append(item["titleLink"])

    

    ws.append(headline)
wb.save("123.xlsx")

























圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
0
小魚
iT邦大師 1 級 ‧ 2021-09-27 13:02:09
最佳解答
for page in range(1,5):                     
    url = link1+str(page)+link2
    print(url)


r = requests.get(url, headers=header)

你這邊只剩下最後一頁了,
縮排再調整一下應該就可以了.

謝謝,解決了~太感激了。

可以再請教各問題嗎?

headline.append(item["titleLink"])
這部分抓出的連結會是相對網址,
若是要再加上網址變成絕對網址
該怎麼做才對呢?

小魚 iT邦大師 1 級 ‧ 2021-09-29 01:18:07 檢舉

你需要的應該是 os.getcwd() 之類的方法,
記得要 import os

0
佑佑來了
iT邦新手 5 級 ‧ 2021-09-27 00:22:01
for page in range(1,5):                     
    url = link1+str(page)+link2
    print(url)

這段應該改成長度為5的url_list,
不然只會儲存最後一筆url

至於你的問題2,
我沒有很理解。

0

因為你第1~5取到的頁面全放入同一支檔案了。
當然只會出現最後一個了。

抱歉,不太了解頁面都放入同一隻檔案是什麼意思?
可以告知下要怎麼修正嗎?

for page in range(5) 這樣嗎?

我要發表回答

立即登入回答