一、分析頁面
開啟今日BBNews網址 https://news.bicido.com ,下拉選擇【程式設計】欄目
1.1、分析請求
F12開啟開發者模式,然後點選Network後點選任意一個請求,Ctrl+F開啟搜尋,輸入標題Apache Doris 2.1.0 版本釋出
,開始搜尋
搜尋結果顯示直接返回的json格式,那就so easy了,直接copy curl,然後將curl 轉換為Python程式碼,執行。
推薦個curl轉Python程式碼的線上工具:https://curlconverter.com/
二、程式碼實現
直接將curl 轉換後的Python程式碼做下修改,然後除錯執行即可。
完整程式碼
# -*- coding: utf-8 -*-
import os
import sys
from datetime import datetime
import requests
opd = os.path.dirname
curr_path = opd(os.path.realpath(__file__))
proj_path = opd(opd(opd(curr_path)))
sys.path.insert(0, proj_path)
from app.conf.conf_base import USERAGENT
spider_config = {
"name_en": "https://news.bicido.com",
"name_cn": "今日BBNews"
}
class Bbnews:
def __init__(self):
self.headers = {
'referer': 'https://news.bicido.com/',
'user-agent': USERAGENT
}
def get_group(self):
url = 'https://news.bicido.com/api/config/news_group/'
content = requests.get(url=url, headers=self.headers)
content = content.json()
return content
def get_news(self):
groups = self.get_group()
news_type = []
for group in groups:
if group['name'] == '程式設計':
news_type = group['news_types']
result = []
for news_type in news_type:
type_id = news_type['id']
url = f'https://news.bicido.com/api/news/?type_id={type_id}'
content = requests.get(url, headers=self.headers)
news_list = content.json()
for new in news_list:
result.append({
"news_title": str(new['title']),
"news_date": datetime.now(),
"source_en": spider_config['name_en'],
"source_cn": spider_config['name_cn'],
})
return result
def main():
bbnews = Bbnews()
results = bbnews.get_news()
print(results)
if __name__ == '__main__':
main()
總結
- 今日BBNews頁面沒反爬策略,比較簡單,拿來即用
- 本文介紹了curl to Python的工具,方便好用。
本文章程式碼只做學習交流使用,作者不負責任何由此引起的法律責任。
各位看官,如對你有幫助歡迎點贊,收藏,轉發,關注公眾號【Python魔法師】獲取更多Python魔法~