iT邦幫忙

0

Python 送出資料 求大神給方向

大神們好
目前利用Python撰寫一個網頁自動修改內容的設定,
但是遇到了一個瓶頸,不知道如何繼續前進的狀況(沒方向),
框架大概如下:
1.這個網頁用是".aspx"
2.網頁權限設定處,有一個欄位可以輸入編號查詢,點選查詢後才會出現該使用者的權限設定有哪些。
2-1.查詢出來後才會出現內容表格。
2-2.若要調整權限則用checkbox打勾or取消。
3.當查詢資料後,在表格最右方有一個"儲存",勾選欲開放之權限後,點擊儲存即可完成設定。
4.我希望不要透過Selenium這樣的瀏覽器模擬。

但是,上方的操作都是在同一個網址內完成,只是傳送的訊息略顯不同而已,想請問各位能否給個方向?謝謝。

相關畫面如下(因機敏關係內容調整處理)
https://ithelp.ithome.com.tw/upload/images/20190719/20107624ERkXu0f2Gv.png

1
japhenchen
iT邦新手 3 級 ‧ 2019-07-22 11:41:36
最佳解答

POST?GET?

GET用PYTHON的REQUESTS就挺好用的,以下是我用來抓KISSRADIO本周排行榜歌單用的方法
在ubuntu server上實作
KISSRADIO發燒排行

import os
import sys
import requests
from lxml import html, etree
from urllib import parse

def kiss排行榜():
    ret = list()
    for kind in range(1, 4):
        kiss = 'http://www.kiss.com.tw/music/billboard.php?a={0}'.format(kind)
        resp = requests.get(kiss)
        htree = html.fromstring(resp.text)
        bbtr = htree.xpath("//table[@id='billboard']/tbody/tr")
        for tr in bbtr:
            tds = tr.xpath('./td')
            if len(tds) >= 6:
                名次 = tds[0].xpath('.//text()')[0]
                歌名 = tds[1].xpath('.//text()')[0]
                歌手 = ''
                if len(tds[2].xpath('./a')) == 0:
                    歌手 = tds[2].text_content()
                else:
                    歌手 = tds[2].xpath('./a')[0].text_content()
                ret.append([名次, 歌名, 歌手])
    return ret

抓下來的曲目我另有他用,不好明說(怕會被吉)

看更多先前的回應...收起先前的回應...

至於POST,也不難,先排除需登錄系統的狀況
url = 'http://www.wheretopost.com.tw/post'
d = {'key1': 'value1', 'key2': 'value2'}
r = requests.post(url, data=d)
print(r.text)

當個網頁爬蟲,還需學會如何分解對方給你的頁面(DOM XPATH),我小小秀了一下,畢竟不是所有網頁回傳給我的都是json或xml.....

剛剛執行的輸出結果
['1', '怨偶', 'MC熱狗-熱狗/艾怡良']
['2', 'Without You', '高爾宣']
['3', '斷了', '李玟']
['4', '你也有今天', '蔡依林']
['5', '巴別塔慶典', '吳青峰']....

froce iT邦大師 6 級 ‧ 2019-07-22 16:35:44 檢舉

推個更好用的,requests-html...

感恩,收下requests-html咯,才學半年多還有N多lib沒碰到

謝謝大神們的幫忙!!

0
小魚
iT邦高手 1 級 ‧ 2019-07-19 17:53:58

不用Selenium,
自己實作似乎不容易...

1
dragonH
iT邦高手 1 級 ‧ 2019-07-19 19:29:47

是想要用 python 模擬網頁送出資料嗎

感覺一般的 http 操作就可以了吧

不過不知道這網頁的 data 是如何送的

也沒辦法舉例就是

我今天來嘗試看看!希望這個方法可行

我要發表回答

立即登入回答