Skip to main content

Webpage Text Transformation Interface,將網頁文章內容以結構化方式儲存,以方便後續分析應用。

Project description

🌐 WTTI

Webpage Text Transformation Interface(WTTI),將網頁文章內容以結構化方式儲存,以方便後續分析應用。

Python Build and Test pypi version GitHub repo size GitHub PyPI - Python Version GitHub issues Open in Colab

🚀 安裝

使用 pip 安裝

# 更新pip
pip install --upgrade pip
pip install WTTI

📦 功能

  • 提供網頁文章留言結構化儲存的介面
  • 支援儲存的內容輸出成不同的格式
    • DataFrame
    • Database
  • 提供Proxy功能,避免被網站封鎖

✍️ 如何使用

from wtti import Post
from wtti.output import posts_to_dataframe

# 建立一個Post物件
post = Post(
    text="如題,我不小心吞下了我的 AirPods,怎麼辦?",
    url="https://www.google.com",
    author="notChatGPT",
    platform="匹踢踢",
    likes=10,
    published_time="2021-01-01 12:00:00",
    title="不小心吞下了我的 AirPods 怎麼辦?",
    category="發問板",
)

# 添加底下的留言
post.add_comment(
    comment_text="你可以去醫院看看",
    author="醫生",
    likes=33,
    published_time="2021-01-01 12:05:00",
)
post.add_comment(
    comment_text="我也不知道",
    # 如果沒有作者或是按讚數,可以不填
    published_time="2021-01-01 12:05:20",
)
post.add_comment(
    comment_text="或者你可以試試用磁鐵把它吸出來!",
    author="DIY達人",
    likes=134,
    published_time="2021-01-01 12:20:00",
)
post.add_comment(
    comment_text="AirPods 是由蘋果公司開發的,如果您使用的是 iPhone 或 iPad,您可以試著與 Siri 聯繫,看看她是否有什麼神奇的解決方法。",
    author="我愛蘋果",
    likes=9487,
    published_time="2021-01-01 12:30:45",
)


# 建立一個Post物件
post2 = Post(
    text="只是發文測試",
    url="https://www.google.com",
    author="developer",
    platform="匹踢踢",
    likes=0,
    published_time="2021-01-01 13:00:00",
    title="測試測試",
    category="測試板",
)


# 輸出成DataFrame
posts_list = [post, post2] # 將所有的Post物件放入list
posts_df, comments_df = posts_to_dataframe(posts_list, merge=False)

# 再將DataFrame輸出成csv檔
posts_df.to_csv("posts.csv", index=False)
comments_df.to_csv("comments.csv", index=False)

📚 類別說明

  • Post:用來儲存文章的類別
  • Comment:用來儲存留言的類別

Post

自動產生的屬性

以下屬性會在建立物件時自動產生,不可手動修改

  • uuid:文章的唯一識別碼
  • created_timestamp:文章物件建立的時間戳記
  • modified_timestamp:文章物件最後一次修改的時間戳記

預設屬性

以下屬性在建立物件時可以指定,如無對應值也可以不指定,不指定時會自動產生預設值

  • text(str):文章內容
  • url(str):文章網址
  • author(str):文章作者
  • platform(str):文章來源平台
  • likes(int):文章按讚數
  • title(str):文章標題
  • published_time:文章發布時間,可以是以下三種格式
      1. timestamp
      1. "%Y-%m-%d %H:%M:%S"
      1. datetime.datetime
  • category(str):文章分類

額外屬性

  • 可以透過Post["new_attribute"] = "new_value"的方式新增屬性

Comment

添加留言方法

預設留言物件會跟著文章物件一起建立

post.add_comment(
    comment_text="你好",
    author="路人",
    likes=1,
    published_time="2021-01-01 12:05:00",
)

預設屬性

以下屬性在建立物件時可以指定,如無對應值也可以不指定,不指定時會自動產生預設值

  • comment_text(str):留言內容
  • author(str):留言作者
  • likes(int):留言按讚數

自動產生的屬性

以下屬性會在建立物件時自動產生,不可手動修改

  • uuid:留言的唯一識別碼
  • created_timestamp:留言物件建立的時間戳記
  • modified_timestamp:留言物件最後一次修改的時間戳記

Proxy

提供Proxy介面,自動從https://www.sslproxies.org/取得Proxy進行request

基礎使用

建立Proxy物件後,使用request方法即可進行request,使用方式與requests相同

from wtti import Proxy
proxy = Proxy()
response = proxy.request("https://www.google.com")

進階使用

from wtti import Proxy
proxy = Proxy(
    headers={
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36",
    }, # 手動指定headers
    cookies={
        "cookie1": "value1",
        "cookie2": "value2",
    }, # 手動指定cookies
    proxy_mode="score", # 指定proxy的模式,有"score"、"order"、"random"三種模式
)
response = proxy.request(
    "https://www.google.com",
    max_retries_per_proxy=3, # 指定每個proxy最多重試幾次
    max_proxies_to_try=3, # 指定最多使用幾個proxy
    ignore_failure=True, # 如果所有proxy都失敗,是否忽略失敗丟出的Raise
    use_local=False, # 如果所有proxy都失敗,是否使用本機IP進行request
)
  • proxy_mode:指定proxy的模式,有scoreorderrandom三種模式
    • score:根據proxy的分數來決定使用哪個proxy,分數越高的proxy越優先使用
      • request成功:分數+3
      • request失敗:分數-1
    • order:依照proxy的順序來決定使用哪個proxy,越早加入的proxy越優先使用
    • random:隨機選擇proxy

🤝 貢獻

如果你發現了一個 bug,或者有任何改進的建議,歡迎提交 issue 或者 pull request。

📜 授權

本套件使用 MIT 授權。詳細的授權條款請參閱 LICENSE 檔案。
This package is licensed under the MIT License.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

WTTI-0.3.0.tar.gz (11.6 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page