iT邦幫忙

2

python網路爬蟲 bs4的問題

不明 2018-03-06 20:54:079369 瀏覽

https://ithelp.ithome.com.tw/upload/images/20180306/20108822DDSIZ1USa9.pnghttps://ithelp.ithome.com.tw/upload/images/20180306/20108822V0KqkwnBsi.pnghttps://ithelp.ithome.com.tw/upload/images/20180306/20108822jzDUln9rlT.png

安安 我是python 3.6 我原本輸入import bs4 會出現 you are trying to run the python2 under python3 後面我找到一些資料 在cmd 輸入 pip3 install beautifulsoup4
就不會再出現 you are 那邊了 (我在做linebot 我自己開一個專門爬蟲的小專案 是成功的了
但是不知道為何 在line bot就出事了
linebot(code):
from flask import Flask

from linebot import (
LineBotApi, WebhookHandler
)
from linebot.exceptions import (
InvalidSignatureError
)
from linebot.models import (
MessageEvent, TextMessage, TextSendMessage, ImageSendMessage
)
import net

app = Flask(name)

Channel Access Token

line_bot_api = LineBotApi('')

Channel Secret

handler = WebhookHandler('')

監聽所有來自 /callback 的 Post Request

@app.route("/callback", methods=['POST'])
def callback():
# get X-Line-Signature header value
signature = request.headers['X-Line-Signature']

# get request body as text
body = request.get_data(as_text=True)
app.logger.info("Request body: " + body)

# handle webhook body
try:
    handler.handle(body, signature)
except InvalidSignatureError:
    abort(400)

return 'OK'

@handler.add(MessageEvent, message=TextMessage)
def handle_message(event):
msg=event.message.text
msg = msg.encode('utf-8')
if msg == '陳冠霖':
line_bot_api.reply_message(event.reply_token,TextSendMessage(text = '開發我的天才'))

elif msg == '美金匯率':          
    line_bot_api.reply_message(event.reply_token,TextSendMessage(text = '美金現在'+net.getData()+'元'))      
          
else :
     line_bot_api.reply_message(event.reply_token,TextSendMessage(text=event.message.text))
      

    

import os
if name == "main":
port = int(os.environ.get('PORT', 5000))
app.run(host='0.0.0.0', port=port)

專門爬蟲的code:
#! python3
import requests
from bs4 import BeautifulSoup
class net:
def getData():
res = requests.get('http://rate.bot.com.tw/xrt?Lang=zh-TW')
soup = BeautifulSoup(res.text,'html.parser')
tag_name = ' tbody tr td'
art = soup.select(tag_name)
art = art[4]
return art.text

看更多先前的討論...收起先前的討論...
froce iT邦大師 1 級 ‧ 2018-03-06 21:45:18 檢舉
你是不是code都從網站複製的?
python3語法只能用python3執行。
把你機器的python環境列出來。
不明 檢舉
對 我是用別人的學舌鳥code 再自行改的 第三句我看不董QAQ我已經弄了兩個禮拜了
不明 檢舉
若您方便 告訴我該如何處理 我上網找過非常多的資料 若是這樣 我直接安裝Python 3如何
froce iT邦大師 1 級 ‧ 2018-03-06 22:52:43 檢舉
1.你真要學,請學著把他改寫成python3。

2.windows下2、3共存:
https://python.freelycode.com/contribution/detail/139

3.不把code丟出來,沒人有辦法通靈幫你改。token不要一起放出來。
不明 檢舉
安安 冒昧問一下 you are trying to run the python2 under python3 這句代表得意思是
我嘗試執行py2 但我是py3 這句是我去python ide的時候 import bs4時出現的
而我之後 在網路上找到 解法後 我在import bs4就沒出現錯誤訊息了 那麼請問我錯誤出在哪裡 ps 我放code囉
froce iT邦大師 1 級 ‧ 2018-03-07 07:56:39 檢舉
1.IT邦幫忙編輯器就有貼code的功能了。
2.https://ideone.com/
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
饅頭
iT邦新手 4 級 ‧ 2018-03-07 09:49:54
最佳解答

上傳到 heroku 前有個文件裡面要放安裝的模組
你有把 bs4 放進去了嗎?

看更多先前的回應...收起先前的回應...
不明 檢舉

願聞其詳 我上網爬過非常多的資料 我對網路這一區塊不太熟 謝謝

饅頭 iT邦新手 4 級 ‧ 2018-03-07 15:47:38 檢舉

可以看看這個
requirements.txt
用 python 部屬的話,如果遇到要安裝新的 module
可以加到 requirements.txt
heroku 在執行時就會安裝了

不明 檢舉

另外 我有另外寫一個class 專門爬蟲的 要怎麼把它裝requirements.txt

饅頭 iT邦新手 4 級 ‧ 2018-03-08 08:44:59 檢舉

最簡單的方法就是把 class 放到你在 heroku 上跑的程式吧
因為 requirement 是 pip 安裝會去這個檔案抓的
所以如果是自己寫的話應該沒辦法

不明 檢舉

我也有push那個我寫的小專案在同一個資料夾 問題是 linebot
那邊 我push他就會跟我講我做錯了,他那邊好像對request有設置可以填的 但是我上網爬過 沒這方面code 請在監聽所有來自 /callback 的 Post Request 這邊看起 我也不知道那邊該怎麼填由於之前做 單純爬蟲有成功 所以才打算寫一個額外的專案 去爬蟲

饅頭 iT邦新手 4 級 ‧ 2018-03-08 13:37:32 檢舉

他就會跟我講我做錯了

那他給什麼訊息?
你現在是一次 push 兩個專案再同一個 heroku 嗎?
如果要同時啟動的話應該沒辦法吧?/images/emoticon/emoticon06.gif

不明 檢舉

他說的錯是no module named bs4 可是我有安裝,
我是一個資料夾 push到heroku一個app裡,裡面有兩個.py的

不明 檢舉

補充 我之前安裝好像有誤 不能import bs4 這次可以 結果還是跟我講
有同樣的錯誤 from bs4 import BeautifulSoup4 是我用的

froce iT邦大師 1 級 ‧ 2018-03-08 16:40:56 檢舉

最後沒有4。

from bs4 import BeautifulSoup
不明 檢舉

ㄚㄚ 打錯~ 我的後面也沒有4

饅頭 iT邦新手 4 級 ‧ 2018-03-12 10:48:35 檢舉

no module named bs4

那代表你的 heroku 沒有安裝 bs4成功呀!
你說的安裝成功是指你在你的電腦上有 bs4
而且沒道理用 import bs4 可以
用 from bs4 import BeautifulSoup 不行
你在本地端跑有沒有問題呀@@?

不明 檢舉

我有寫一個小專案 專們爬蟲的 有成功了 , 之後 我用IDE 打from bs4 import BeautifulSoup 可以 但是 import bs4不能 之後去網路爬文友爬到 人家說要用pip3 開頭的在cmd下載 之後ide也沒狀況了 請問
怎麼把我的bs4 push到 heroku 那requests也需要嗎 我看日誌 沒有說requests有問題

饅頭 iT邦新手 4 級 ‧ 2018-03-13 17:19:55 檢舉

你的電腦現在是有兩個 python 環境嗎? 2和3?
如果是的話建議先把2拿掉,除非你很確定有分開
不然可能是安裝到2裡面道是要用3的,這樣當然找不到
push 還有一個方法就是你把 bs4 的資料夾複製一份到專案裡
但是不建議這個用法,除非你有import 好正確的bs4資料夾,不然一樣會有問題

不明 檢舉

方便留下您的資料嗎 不方便的話 我的給您 abc225313@gmail.com
我剛重新下載 python 3.6.4 後面我去搜索 python 2又有找到
先前就是因為有搜索到 所以打算從新下載一個

不明 檢舉

補充一下 搜索方面 只要打到python 後面怎麼打 他都會出現自己打的
只是會變紅字

饅頭 iT邦新手 4 級 ‧ 2018-03-14 16:46:37 檢舉

看站內簡訊吧

饅頭 iT邦新手 4 級 ‧ 2018-03-16 10:27:13 檢舉

最後解法
所以在本地端安裝好 bs4之後
再去 site-pakage 把 bs4 跟 beautifulsoup 的資料夾複製出來一起推到 heroku
btw beautifulsoup 目前支援到3.4

我要發表回答

立即登入回答