課程特價中
什麼是網頁爬蟲?
假設你的老闆給了你一個任務,他希望你從一個網站上提取大約 1000 個產品,將資料結構化並儲存到資料庫中,你會手動複製貼上所有的產品細節,包括產品名稱、網址和價格?我可以想像你會工作幾天幾夜,但你不會完成這個任務,所以這就是網頁爬蟲的優勢。因此,網頁爬蟲,或網頁採集或網頁資料提取就像寫一個指令碼,可以在幾分鐘內自動從網站上提取資料!。
為什麼是 LXML 而不是 BeautifulSoup?
LXML 是一個輕量級的 HTML 解析器,即使是最流行的網頁抓取框架(Scrapy)也是建立在LXML之上的,BeautifulSoup 在開放給我們的功能數量上有點過剩,它有更多的功能可以使用,是的,沒錯 然而,在Web Scraping中,大多數時候我們使用 XPath 和 CSS 選擇器來瀏覽和選擇要從HTML網頁(樹)中爬取的內容,所以沒有必要學習新的功能,也沒有必要浪費那麼多時間來熟悉 BeautifulSoup 的 API 和內部架構,此外,LXML在效能方面也比BeautifulSoup好得多。
https://softnshare.com/web-scraping-with-python-using-requests-lxml-splash/
同時也有28部Youtube影片,追蹤數超過7,970的網紅吳老師EXCEL VBA設計(大數據自動化)教學,也在其Youtube影片中提到,VBA到Python程式開發202101第9次上課 01_重點回顧與用requests當網路爬蟲 02_切割資料與新增到資料庫說明 03_新增資料庫與批次寫入資料 04_用樞紐分析表與圖建立查詢結果 05_改用SQL語法查詢結果 06_下載JSON與取得所有資料 07_json轉存為CSV檔與下載...
「python requests爬蟲」的推薦目錄:
- 關於python requests爬蟲 在 軟體開發學習資訊分享 Facebook 的最佳解答
- 關於python requests爬蟲 在 軟體開發學習資訊分享 Facebook 的最佳貼文
- 關於python requests爬蟲 在 吳老師excel函數與vba大數據教學 Facebook 的最讚貼文
- 關於python requests爬蟲 在 吳老師EXCEL VBA設計(大數據自動化)教學 Youtube 的最佳解答
- 關於python requests爬蟲 在 吳老師EXCEL VBA設計(大數據自動化)教學 Youtube 的最佳解答
- 關於python requests爬蟲 在 吳老師EXCEL VBA設計(大數據自動化)教學 Youtube 的最讚貼文
- 關於python requests爬蟲 在 [問題] 爬蟲- requests後的資料查詢(新手) - 看板Python 的評價
- 關於python requests爬蟲 在 【Python 實作】PTT八卦版爬蟲 - Steven的行銷觀察 的評價
- 關於python requests爬蟲 在 Python爬蟲練習日記01 - 簡易PTT爬蟲(Requests ... - 唬嚨優化師 的評價
python requests爬蟲 在 軟體開發學習資訊分享 Facebook 的最佳貼文
課程特價中
什麼是網頁爬蟲?
假設你的老闆給了你一個任務,他希望你從一個網站上提取大約 1000 個產品,將資料結構化並儲存到資料庫中,你會手動複製貼上所有的產品細節,包括產品名稱、網址和價格?我可以想像你會工作幾天幾夜,但你不會完成這個任務,所以這就是網頁爬蟲的優勢。因此,網頁爬蟲,或網頁採集或網頁資料提取就像寫一個指令碼,可以在幾分鐘內自動從網站上提取資料!。
為什麼是 LXML 而不是 BeautifulSoup?
LXML 是一個輕量級的 HTML 解析器,即使是最流行的網頁抓取框架(Scrapy)也是建立在LXML之上的,BeautifulSoup 在開放給我們的功能數量上有點過剩,它有更多的功能可以使用,是的,沒錯 然而,在Web Scraping中,大多數時候我們使用 XPath 和 CSS 選擇器來瀏覽和選擇要從HTML網頁(樹)中爬取的內容,所以沒有必要學習新的功能,也沒有必要浪費那麼多時間來熟悉 BeautifulSoup 的 API 和內部架構,此外,LXML在效能方面也比BeautifulSoup好得多。
https://softnshare.com/web-scraping-with-python-using-requests-lxml-splash/
python requests爬蟲 在 吳老師excel函數與vba大數據教學 Facebook 的最讚貼文
[分享文]用EXCEL VBA網路爬蟲擷取YAHOO股市資料
因應疫情,剛好可以好好學習網路爬蟲,
最簡單的還是用EXCEL裡的VBA來抓資料,
這個範例適用IE物件來抓取,
程式可以用本來改一改就好,細節不要出錯,
很快資料就全部下來了,如下。
用EXCEL錄製巨集爬取YAHOO股市資料,
會有亂碼的問題,用PYTHON來爬取,
對一般人來說門檻又太高,
如果如何在EXCEL VBA就可以輕鬆爬取網路資料,
就是本文所要分享的重點。
當然本文不是要推崇VBA有多棒,Python不好用,
我的想法是只要用對工具,工作可以很愜意,
可以協同應用工具,讓彼此都能發揮最大的強項,
是本文寫說明的,
另外順便分享在EXCEL除了用匯入資料從WEB功能外,
也可以用IE物件,
功能很像是Python的requests加上beautifulsoup4差不多功能,
不同的是,可以將下載的資料直接放在EXCEL,
也就是把EXCEL當成資料庫用,這樣可以減少很多資料庫匯入匯出的麻煩。
完整教學與影片連結:
https://terry55wu.blogspot.com/2021/05/excel-vbayahoo.html
吳老師 2021/5/22
python requests爬蟲 在 吳老師EXCEL VBA設計(大數據自動化)教學 Youtube 的最佳解答
VBA到Python程式開發202101第9次上課
01_重點回顧與用requests當網路爬蟲
02_切割資料與新增到資料庫說明
03_新增資料庫與批次寫入資料
04_用樞紐分析表與圖建立查詢結果
05_改用SQL語法查詢結果
06_下載JSON與取得所有資料
07_json轉存為CSV檔與下載HTML
完整教學
http://goo.gl/aQTMFS
吳老師教學論壇
http://www.tqc.idv.tw/
教學論壇(之後課程會放論壇上課學員請自行加入):
https://groups.google.com/forum/#!forum/tcfst_python_2021_1
課程簡介:入門
建置Python開發環境
基本語法與結構控制
迴圈、資料結構及函式
VBA重要函數到Python
檔案處理
資料庫處理
課程簡介:進階
網頁資料擷取與分析、Python網頁測試自動化、YouTube影片下載器
處理 Excel 試算表、處理 PDF 與 Word 文件、處理 CSV 檔和 JSON 資料
實戰:PM2.5即時監測顯示器、Email 和文字簡訊、處理影像圖片、以 GUI 自動化來控制鍵盤和滑鼠
上課用書:
參考書目
Python初學特訓班(附250分鐘影音教學/範例程式)
作者: 鄧文淵/總監製, 文淵閣工作室/編著?
出版社:碁峰? 出版日期:2016/11/29
Python程式設計入門
作者:葉難
ISBN:9789864340057
出版社:博碩文化
出版日期:2015/04/02
吳老師 110/4/20
EXCEL,VBA,Python,自強工業基金會,EXCEL,VBA,函數,程式設計,線上教學,PYTHON安裝環境
python requests爬蟲 在 吳老師EXCEL VBA設計(大數據自動化)教學 Youtube 的最佳解答
VBA到Python程式開發202101第9次上課
01_重點回顧與用requests當網路爬蟲
02_切割資料與新增到資料庫說明
03_新增資料庫與批次寫入資料
04_用樞紐分析表與圖建立查詢結果
05_改用SQL語法查詢結果
06_下載JSON與取得所有資料
07_json轉存為CSV檔與下載HTML
完整教學
http://goo.gl/aQTMFS
吳老師教學論壇
http://www.tqc.idv.tw/
教學論壇(之後課程會放論壇上課學員請自行加入):
https://groups.google.com/forum/#!forum/tcfst_python_2021_1
課程簡介:入門
建置Python開發環境
基本語法與結構控制
迴圈、資料結構及函式
VBA重要函數到Python
檔案處理
資料庫處理
課程簡介:進階
網頁資料擷取與分析、Python網頁測試自動化、YouTube影片下載器
處理 Excel 試算表、處理 PDF 與 Word 文件、處理 CSV 檔和 JSON 資料
實戰:PM2.5即時監測顯示器、Email 和文字簡訊、處理影像圖片、以 GUI 自動化來控制鍵盤和滑鼠
上課用書:
參考書目
Python初學特訓班(附250分鐘影音教學/範例程式)
作者: 鄧文淵/總監製, 文淵閣工作室/編著?
出版社:碁峰? 出版日期:2016/11/29
Python程式設計入門
作者:葉難
ISBN:9789864340057
出版社:博碩文化
出版日期:2015/04/02
吳老師 110/4/20
EXCEL,VBA,Python,自強工業基金會,EXCEL,VBA,函數,程式設計,線上教學,PYTHON安裝環境
python requests爬蟲 在 吳老師EXCEL VBA設計(大數據自動化)教學 Youtube 的最讚貼文
VBA到Python程式開發202101第9次上課
01_重點回顧與用requests當網路爬蟲
02_切割資料與新增到資料庫說明
03_新增資料庫與批次寫入資料
04_用樞紐分析表與圖建立查詢結果
05_改用SQL語法查詢結果
06_下載JSON與取得所有資料
07_json轉存為CSV檔與下載HTML
完整教學
http://goo.gl/aQTMFS
吳老師教學論壇
http://www.tqc.idv.tw/
教學論壇(之後課程會放論壇上課學員請自行加入):
https://groups.google.com/forum/#!forum/tcfst_python_2021_1
課程簡介:入門
建置Python開發環境
基本語法與結構控制
迴圈、資料結構及函式
VBA重要函數到Python
檔案處理
資料庫處理
課程簡介:進階
網頁資料擷取與分析、Python網頁測試自動化、YouTube影片下載器
處理 Excel 試算表、處理 PDF 與 Word 文件、處理 CSV 檔和 JSON 資料
實戰:PM2.5即時監測顯示器、Email 和文字簡訊、處理影像圖片、以 GUI 自動化來控制鍵盤和滑鼠
上課用書:
參考書目
Python初學特訓班(附250分鐘影音教學/範例程式)
作者: 鄧文淵/總監製, 文淵閣工作室/編著?
出版社:碁峰? 出版日期:2016/11/29
Python程式設計入門
作者:葉難
ISBN:9789864340057
出版社:博碩文化
出版日期:2015/04/02
吳老師 110/4/20
EXCEL,VBA,Python,自強工業基金會,EXCEL,VBA,函數,程式設計,線上教學,PYTHON安裝環境
python requests爬蟲 在 【Python 實作】PTT八卦版爬蟲 - Steven的行銷觀察 的美食出口停車場
引入url 擷取套件requests 後,透過PTT 頁面上觀察可藉由get 的方式來抓取內容,先把變數藉由文檔print 出來會發現跑出來的內容非 ... ... <看更多>
python requests爬蟲 在 Python爬蟲練習日記01 - 簡易PTT爬蟲(Requests ... - 唬嚨優化師 的美食出口停車場
現在我們把爬下來的html,用BeautifulSoup解析出來,然後存在soup變數中。 import requests from bs4 import BeautifulSoup res = requests.get('https:// ... ... <看更多>
python requests爬蟲 在 [問題] 爬蟲- requests後的資料查詢(新手) - 看板Python 的美食出口停車場
大家好,小弟剛接觸python幾天...
有個資料查詢的問題一直無法解決
(https://amis.afa.gov.tw/m_coop/CoopVegFullMarketMainProd.aspx )
該網站查詢的資料結果是url不變並以js呈現(請見諒非本科系的形容@@")
且結果若超過60筆,才會出現下一頁的按鈕可以點選
所以碰到的問題是在顯示資料之前
第2、3頁...下一頁的按鈕不會出現
而按鈕的方式是以javascripl:__doPostBack的方式寫入
因此問題有兩個:
1.我該如何才能獲得第1頁之後的資料
目前查到的方法好像要利用requests.session方法
但是怎麼寫都跑不出來
2.有辦法可以在查詢後,直接利用"下載"這個按鈕下載資料嗎
爬文後不知道能否利用request後,再配合selenium
只是找到的文章大多是利用cookie帶入,好像不適合這個網頁
不知道是否有善心版友可以協助指導新手...
以下附上查詢的code跟試著加入session的code
單純查詢一次性資料:
# -*- coding: utf-8 -*-
import requests
from bs4 import BeautifulSoup
import pandas as pd
resp =
requests.get('https://amis.afa.gov.tw/m_coop/CoopVegFullMarketMainProd.aspx')
soup = BeautifulSoup(resp.text, 'html5lib')
view_state = soup.find(id='__VIEWSTATE')['value']
event_validation = soup.find(id='__EVENTVALIDATION')['value']
viewstate_generator = soup.find(id='__VIEWSTATEGENERATOR')['value']
form_data = {
'__VIEWSTATE': view_state,
'__VIEWSTATEGENERATOR': viewstate_generator,
'__EVENTVALIDATION': event_validation,
'ctl00$contentPlaceHolder$txtStartDate':'106/12/01',
'ctl00$contentPlaceHolder$txtEndDate':'107/03/15',
'ctl00$contentPlaceHolder$ucCoopVegFruitMarket$radlMarketRange':'P',
'ctl00$contentPlaceHolder$ucCoopVegFruitMarket$lstMarket':'109',
'ctl00$contentPlaceHolder$ucCoopVegFruitMainProduct$radlProductType':'V',
'ctl00$contentPlaceHolder$ucCoopVegFruitMainProduct$lstProduct':'FA0',
'ctl00$contentPlaceHolder$dropProductClass':'1',
'ctl00$contentPlaceHolder$btnQuery':'查詢'
}
resp =
requests.post('https://amis.afa.gov.tw/m_coop/CoopVegFullMarketMainProd.aspx',
data=form_data)
df = pd.read_html(resp.text)[6].dropna(axis=0, how='any')
print(df)
---------------------------------------------------------------------------
加上session,但是資料一直無法跳到第2頁> < :
import requests
from bs4 import BeautifulSoup
import pandas as pd
resp =
requests.get('https://amis.afa.gov.tw/m_coop/CoopVegFullMarketMainProd.aspx')
soup = BeautifulSoup(resp.text, 'html5lib')
with requests.session() as s:
s.headers['user-agent'] = 'Mozilla/5.0'
soup = BeautifulSoup(resp.content, 'html5lib')
target = (
'ctl00$contentPlaceHolder$dataPager$ctl02$ctl{:02d}'
)
# unsupported CSS Selector 'input[name^=ctl00][value]'
data = { tag['name']: tag['value']
for tag in soup.select('input[name^=ctl00]') if tag.get('value')
}
state = { tag['name']: tag['value']
for tag in soup.select('input[name^=__]')
}
data.update(state)
view_state = soup.find(id='__VIEWSTATE')['value']
event_validation = soup.find(id='__EVENTVALIDATION')['value']
viewstate_generator = soup.find(id='__VIEWSTATEGENERATOR')['value']
form_data = {
'__VIEWSTATE': view_state,
'__VIEWSTATEGENERATOR': viewstate_generator,
'__EVENTVALIDATION': event_validation,
'ctl00$contentPlaceHolder$txtStartDate':'106/12/01',
'ctl00$contentPlaceHolder$txtEndDate':'107/03/15',
'ctl00$contentPlaceHolder$ucCoopVegFruitMarket$radlMarketRange':'P',
'ctl00$contentPlaceHolder$ucCoopVegFruitMarket$lstMarket':'109',
'ctl00$contentPlaceHolder$ucCoopVegFruitMainProduct$radlProductType':'V',
'ctl00$contentPlaceHolder$ucCoopVegFruitMainProduct$lstProduct':'FA0',
'ctl00$contentPlaceHolder$dropProductClass':'1',
'ctl00$contentPlaceHolder$btnQuery':'查詢'
}
#
data['ctl00$FhMainContent$FhContent$ctl00$AnalysesCourse$CustomPager$total']
resp =
requests.post('https://amis.afa.gov.tw/m_coop/CoopVegFullMarketMainProd.aspx',
data=form_data)
soup = BeautifulSoup(resp.text, 'html5lib')
sl = soup.find_all("span")
last_page = '+'.join([span.get_text() for span in sl][-2])
# for page in range(last_page + 1):
for page in range(int(last_page)):
data['__EVENTTARGET'] = target.format(page)
df = pd.read_html(resp.text)[7].dropna(axis=0, how='any')
print(df)
謝謝大家
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 180.217.170.50
※ 文章網址: https://www.ptt.cc/bbs/Python/M.1521254934.A.7ED.html
※ 編輯: truth1999 (180.217.170.50), 03/17/2018 10:51:12
ctl00$contentPlaceHolder$dataPager$ctl02$ctl00,並且不會變動
所以我原本想簡單一點,直接由結果抓到共x頁,然後執行x-1次換頁即可
謝謝f大、v大跟a大的回覆與建議,v大提到的部份我有注意到
承上回覆,所以我有嘗試將換頁按鈕js的dopostback參數寫入。
不管是頁碼按鈕(值為頁數-1)、或者是下一頁按鈕(值不變),
還是寫不出如何在第一次取得requests後,再送出eventTarget
來拿到下一頁的查詢結果...
可能是因為此網站的設定是,要取到第一次的查詢後,
才會觀察(搜尋?)到eventTarget,所以這是我困擾的點><
※ 編輯: truth1999 (180.217.170.50), 03/17/2018 18:02:07
謝謝C大的資訊,真的在第二頁開始加上參數就可以了
超級感謝您
※ 編輯: truth1999 (180.217.170.50), 03/18/2018 14:07:34
... <看更多>