爬蟲筆記-將資訊使用josn檔匯出
目標是建立一個字典,裡面的key分別是
文章摘要,
文章連結,
文章作者,
最後把這個字典用json檔匯出
我們可以發現文章的摘要以及文章連結
位於他的元素中 有class="title"屬性的div標籤底下的a標籤
ps ppt摘要有個特性,如果文章被刪除的情況下a標籤就不存在
![]() |
| 我們的文章作者資訊位在class="author"的div標籤中 import requests import json from bs4 import BeautifulSoup import html5lib url='https://www.ptt.cc/bbs/Gossiping/index.html' headers={'user-agent':'myapp/0.0.1'} #模擬使用者進入網頁 cookies={'over18':'1'} #代入參數cookies response=requests.get(url,headers=headers,cookies=cookies) data=response.text #將HTTP響應文本存放在data物件中 soup=BeautifulSoup(data,'html5lib') #將文本以HTML5LIB的方式解析,高容錯率 article_list=[] #之後要存放文章資訊的list titles=soup.find_all('div',class_='title') #文章的摘要以及連結定位在class="title"屬性的div標籤 authors=soup.select('div.author') #文章的作者資訊在div標籤中有author屬性的元素 for title,author in zip(titles,authors): if title.a: #避免因為文章刪除導致,a標籤為None link='https://www.ptt.cc'+\ title.a['href'] #\換行符號, title.a['href']:title的a標籤中href的屬性值 author=author #div中有authour屬性值的標籤 print(f'link={link}, author={author}') #確認元素定位 連結以及作者是否正確 article={ 'title':title.text.strip(), 'link':link, 'author':author.text } #.text 只取字串部分 strip() 刪除左右字元,預設空字元 article_list.append(article) #將每一次迴圈的字典加入到list中 print(article_list) #將著將存放所有文章的資訊存為json檔 with open('ptt-articles.json','w',encoding='utf-8')as f: json.dump(article_list,f,indent=2, sort_keys=True,ensure_ascii=False) #json.dump() 將文檔轉換成json格式 , #jump()、load() 函數是交互作用 在處理物件的時候使用, #例如檔案物件 jumps()、loads() 則是處理字串的時候使用 #f 檔案物件 #indent=2 設置縮進的空格數為2, 增加可讀性 #sort_keys=True 字典的key按照字母排序 #ensure_ascii=False 禁止用ASCII編碼 --------------------------------- [ { "author": "fatslave", "link": "https://www.ptt.cc/bbs/Gossiping/M.1684606447.A.BE4.html", "title": "[問卦] 去女僕咖啡店嗆她以後不會再來可以嗎" }, { "author": "ununnihao", "link": "https://www.ptt.cc/bbs/Gossiping/M.1684606529.A.8D6.html", "title": "Re: [問卦] 美國警察會怎麼應對超商浩克?" }, { "author": "yuehsuan", "link": "https://www.ptt.cc/bbs/Gossiping/M.1684606554.A.586.html", "title": "[問卦] 求婚一次被拒絕有什麼大不了的嗎" }, { "author": "yochiya", "link": "https://www.ptt.cc/bbs/Gossiping/M.1684606685.A.482.html", "title": "Re: [問卦] 八卦版似乎完全沒有一點法律常識?" }, { "author": "GYLin", "link": "https://www.ptt.cc/bbs/Gossiping/M.1684606726.A.DAC.html", "title": "[問卦] 今天警察如果也被尻到噴血" }, { "author": "unclefucka", "link": "https://www.ptt.cc/bbs/Gossiping/M.1684607082.A.B17.html", "title": "Re: [問卦] 不覺得警察很聰明嗎" }, { "author": "ciban", "link": "https://www.ptt.cc/bbs/Gossiping/M.1684607144.A.216.html", "title": "Re: [問卦] 美國警察會怎麼應對超商浩克?" }, { "author": "fatslave", "link": "https://www.ptt.cc/bbs/Gossiping/M.1684607305.A.1A9.html", "title": "[問卦] 熱火怎麼突然就贏兩場" }, { "author": "wahaha23", "link": "https://www.ptt.cc/bbs/Gossiping/M.1684607498.A.801.html", "title": "[爆卦] 22/23英超冠軍確定是曼城" }, { "author": "killerchi", "link": "https://www.ptt.cc/bbs/Gossiping/M.1684607510.A.992.html", "title": "[問卦] 等他都坐下了你還揍" }, { "author": "MeiHS", "link": "https://www.ptt.cc/bbs/Gossiping/M.1684607590.A.E78.html", "title": "[問卦] 蝦子有沒有去腸泥,真的吃得出差異嗎?" }, { "author": "christopherl", "link": "https://www.ptt.cc/bbs/Gossiping/M.1684607608.A.DF4.html", "title": "[問卦] Dcard熱門:爸媽擔心不是處女,動手打我" }, { "author": "wan5389", "link": "https://www.ptt.cc/bbs/Gossiping/M.1684607643.A.922.html", "title": "[新聞] 民進黨團釋善意暫緩再生醫療雙法 柯建銘" }, { "author": "THEHELY", "link": "https://www.ptt.cc/bbs/Gossiping/M.1684607667.A.FE5.html", "title": "Re: [問卦] 八卦版似乎完全沒有一點法律常識?" }, { "author": "metallican", "link": "https://www.ptt.cc/bbs/Gossiping/M.1684607677.A.5C1.html", "title": "[問卦] 比谷清十郎遇到浩克怎麼辦" }, { "author": "gjcl6", "link": "https://www.ptt.cc/bbs/Gossiping/M.1684607734.A.EE5.html", "title": "[問卦] 上銬後的現行犯還可以爆打他嗎?" }, { "author": "protoss", "link": "https://www.ptt.cc/bbs/Gossiping/M.1684607773.A.6A6.html", "title": "Re: [問卦] 美國警察會怎麼應對超商浩克?" }, { "author": "lwt501cx", "link": "https://www.ptt.cc/bbs/Gossiping/M.1677600392.A.D12.html", "title": "[公告] 八卦板板規(2023.03.01)" }, { "author": "squall1986", "link": "https://www.ptt.cc/bbs/Gossiping/M.1683371005.A.2C0.html", "title": "[協尋] 發錢 貓咪 雲林斗六環球'嘉新6路' 賞1萬6" }, { "author": "ubcs", "link": "https://www.ptt.cc/bbs/Gossiping/M.1684514537.A.3CB.html", "title": "[公告] 第一屆八卦女神大賽 520提名預選開跑" }, { "author": "ubcs", "link": "https://www.ptt.cc/bbs/Gossiping/M.1684514609.A.328.html", "title": "[公告] 八卦女神大賽活動置底閒聊區" } ] |
標籤: 爬蟲



0 個意見:
張貼留言
訂閱 張貼留言 [Atom]
<< 首頁