最近RPAを初めて触ったのですがその際に詰まった事があり、参考記事が少なかったので共有します。
依頼された要件は毎日手動更新しているものがあるので、スクレイピングをして自動化してほしいという内容です。(対象は自社サイト)
automation anywhereを使用して作成する事も要件にあり、これのみで作成しています。
まず作成したものの全容です。
csvのURLからサイトの特定のtextを取得してcsvに格納、更新するというものです。
csv,ループなど..プログラムの構文と同じ感じで使用できます。
REST アクションではheader、プロキシなど設定ができます。
モバイルからのアクセスが必要、URLリストが同一オリジンだった為
User-Agentとkeep-aliveを付与して送信します。
レスポンスは辞書型で返してくれます。
resDictのBodyを※1HTML Parserの CSSセレクタ検索でパースします。
成功するとlistにdictを格納して返してくれます。
この表示確認出来そうなdictを見るとエラー発生で落ちます。なんでや。※2
なのでこの中の値を確認する為にループを使用する必要があります。
参照できました。
後はリストからも参照は可能なので $parse_html[0]{text}$ でも値を取り出せます。
stringは通す、任意も通す、dictは通さない
任意のアスタリスクがanyに見えてしまうよ..
※1
HTML Parser
https://s3-us-west-2.amazonaws.com/botstore-media/wp-content/uploads/2020/08/02095120/a2019-html-parser.pdf
英語なのでここに突っ込んでください
translate.google.co.jp
※2
多次元があるので再帰とか使用しないと大変だからなのかな???
parserの実装内容
github.com
ちなみにPythonで実行した場合
import requests
from bs4 import BeautifulSoup
def getHoge(url):
# 適当なURL
AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.6 Mobile/15E148 Safari/604.1"
header = {
"User-Agent": user_agent
}
# Webページを取得
try:
r = requests.get(url,headers=header)
r.raise_for_status()
soup = BeautifulSoup(r.content, "html.parser")
except requests.exceptions.RequestException as e:
return "WEBサイト" + url + "に接続できませんでした。"
# class名がfooter_tickerのタグを取得
eles = soup.select('div.footer_hoge > p > span')
if eles != :
# パーサーにデータを入力
return eles[0].string
else:
return url + " 人数を解析取得できませんでした"
with open("huga.csv", "r" , newline="", encoding="utf-8") as input_csvfile:
csvreader = csv.DictReader(input_csvfile, ['メーカー','商品名','URL','購入人数'])
buyout_people_list =
j = 0
next(csvreader)
# 更新用人数リストを取得
for row in csvreader:
num = getMoaconBenthMark(row["URL"])
buyout_people_list.append({'購入人数': num})
print(buyout_people_list[j])
j = j + 1
with open("huga人数追加.csv", "w", newline="", encoding="utf-8") as output_csvfile:
csvwriter = csv.DictWriter(output_csvfile, ['メーカー','商品名','URL','購入人数'])
csvwriter.writeheader()
input_csvfile.seek(0)
next(csvreader)
i = 0
for row in csvreader:
row.update(buyout_people_list[i])
print(row)
csvwriter.writerow(row)
i = i + 1
Pythonをautomation anywhereで実行する事を試したのですがtutorialやHello worldも実行できず、記事も見当たらなかったので
良かったらPythonの実行方法を知っている方がいれば教えてください