お豆のメモ すぐ忘れるからメモ(ぷろぐらみんぐとか) 2016-11-07T00:22:55+09:00 omame6263 Hatena::Blog hatenablog://blog/8454420450080602417 ParticleSystemのスクリプト制御 hatenablog://entry/10328749687193271510 2016-11-07T00:22:55+09:00 2016-11-07T01:00:00+09:00 はじめに,スクリプト制御のためにInspectorでPlay On Awakeのチェックを外しておく 条件でOn,Offを切り替えるとき private GameObject obj; private ParticleSystem particle; // Use this for initialization void Start () { obj = GameObject.Find("hoge"); particle = obj.GetComponent<ParticleSystem>(); } // Update is called once per frame void Update … <p>はじめに,<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EA%A5%D7%A5%C8">スクリプト</a>制御のためにInspectorでPlay On Awakeのチェックを外しておく</p> <div class="section"> <h4>条件でOn,Offを切り替えるとき</h4> <pre class="code lang-cs" data-lang="cs" data-unlink> <span class="synType">private</span> GameObject obj; <span class="synType">private</span> ParticleSystem particle; <span class="synComment">// Use this for initialization</span> <span class="synType">void</span> Start () { obj = GameObject.Find(<span class="synConstant">&quot;hoge&quot;</span>); particle = obj.GetComponent&lt;ParticleSystem&gt;(); } <span class="synComment">// Update is called once per frame</span> <span class="synType">void</span> Update () { <span class="synStatement">if</span> (<span class="synStatement">this</span>.transform.position.z &gt; <span class="synConstant">50</span>) { particle.Play(); } <span class="synStatement">if</span> (<span class="synStatement">this</span>.transform.position.z &lt;= <span class="synConstant">50</span>) { particle.Stop(); } } </pre> </div> <div class="section"> <h4>各種パラメータ等の変更</h4> <div class="section"> <h5>StartSizeの変更</h5> <pre class="code lang-cs" data-lang="cs" data-unlink> paricle.startSize = <span class="synConstant">4</span>; <span class="synComment">//Random Betweent Two Constantsで設定してる場合</span> <span class="synType">float</span> min = <span class="synConstant">2.3</span>; <span class="synType">float</span> max = <span class="synConstant">3.5</span>; paricle.startSize = Random.Range(min,max); </pre> </div> <div class="section"> <h5>LoopingのOn,Off</h5> <pre class="code lang-cs" data-lang="cs" data-unlink> paricle.loop = <span class="synConstant">true</span>; </pre> </div> <div class="section"> <h5>Shape(形状)の変更</h5> <pre class="code lang-cs" data-lang="cs" data-unlink> <span class="synComment">//一度こうしてあげないとだめ</span> var sh = particle.shape; sh.shapeType = ParticleSystemShapeType.Mesh; </pre> </div> </div> omame6263 特定のオブジェクトに対してアクセス hatenablog://entry/10328749687193261861 2016-11-06T23:46:05+09:00 2016-11-07T00:14:43+09:00 物忘れが激しいのでメモ //ゲームオブジェクト変数を用意しておく private GameObject obj; // Use this for initialization void Start () { //オブジェクトの名前で対象のオブジェクトを見つける //オブジェクト変数がpublicであればInspectorからの指定も可 obj = GameObject.Find("hoge"); } // Update is called once per frame void Update () { obj.transform.Translate(1.0, 0, 0); } <p>物忘れが激しいのでメモ<br /> <br /> </p> <pre class="code lang-cs" data-lang="cs" data-unlink> <span class="synComment">//ゲームオブジェクト変数を用意しておく</span> <span class="synType">private</span> GameObject obj; <span class="synComment">// Use this for initialization</span> <span class="synType">void</span> Start () { <span class="synComment">//オブジェクトの名前で対象のオブジェクトを見つける</span> <span class="synComment">//オブジェクト変数がpublicであればInspectorからの指定も可</span> obj = GameObject.Find(<span class="synConstant">&quot;hoge&quot;</span>); } <span class="synComment">// Update is called once per frame</span> <span class="synType">void</span> Update () { obj.transform.Translate(<span class="synConstant">1.0</span>, <span class="synConstant">0</span>, <span class="synConstant">0</span>); } </pre> omame6263 Unity AddForce()について hatenablog://entry/10328749687191957672 2016-10-30T00:01:08+09:00 2016-11-06T23:34:50+09:00 Rigidbodyに力を加えることができる.加え方に複数種類があるのでメモ書式 AddForce(Vector3,ForceMode); ForceModeの種類は以下の通り. Force : 継続的な力を加える.質量の影響を受ける Acceleration : 継続的な加速を加える 質量の影響を受けない Impulse : 瞬間的な力を加える 質量の影響を受ける VelocityChange : 連続的な速度変化を加える 質量の影響を受けない public Rigidbody rb; public Vector3 vct3; // Use this for initialization vo… <p>Rigidbodyに力を加えることができる.</p><p>加え方に複数種類があるのでメモ</p><p>書式</p> <pre class="code lang-cs" data-lang="cs" data-unlink>AddForce(Vector3,ForceMode); </pre><p></p><p>ForceModeの種類は以下の通り.</p> <ul> <li><b>Force</b> : 継続的な力を加える.質量の影響を受ける</li> </ul> <ul> <li><b>Acceleration</b> : 継続的な加速を加える 質量の影響を受けない</li> </ul> <ul> <li><b>Impulse</b> : 瞬間的な力を加える 質量の影響を受ける</li> </ul> <ul> <li><b>VelocityChange</b> : 連続的な速度変化を加える 質量の影響を受けない </li> </ul><pre class="code lang-cs" data-lang="cs" data-unlink> <span class="synType">public</span> Rigidbody rb; <span class="synType">public</span> Vector3 vct3; <span class="synComment">// Use this for initialization</span> <span class="synType">void</span> Start () { rb = GetComponent&lt;Rigidbody&gt;(); } <span class="synComment">// Update is called once per frame</span> <span class="synType">void</span> Update () { <span class="synStatement">if</span> (Input.GetKeyDown(KeyCode.F)) { rb.AddForce(vct3, ForceMode.Force); } <span class="synStatement">if</span> (Input.GetKeyDown(KeyCode.A)) { rb.AddForce(vct3, ForceMode.Acceleration); } <span class="synStatement">if</span> (Input.GetKeyDown(KeyCode.I)) { rb.AddForce(vct3, ForceMode.Impulse); } <span class="synStatement">if</span> (Input.GetKeyDown(KeyCode.V)) { rb.AddForce(vct3, ForceMode.VelocityChange); } } </pre> omame6263 C#の名前空間とクラス名について hatenablog://entry/6653812171403012046 2016-06-28T11:51:49+09:00 2016-06-28T11:59:37+09:00 namespace Body.test { public partial class MainWindow : Window { private Body[] bodies; このように書いたとき(もしくは自動生成した場合) 'body' は '名前空間' ですが、'型' のように使用されています。 とエラーが出てしまうことがあるこれは 'Body'が名前空間の名前とかぶってしまっているため、区別がつけられない状態となっているなので、この場合はかぶらない名前を付けることで回避できる namespace MyBody.test { public partial class MainWindow … <pre class="code lang-cs" data-lang="cs" data-unlink> <span class="synType">namespace</span> Body.test { <span class="synType">public</span> <span class="synStatement">partial</span> <span class="synType">class</span> MainWindow : Window { <span class="synType">private</span> Body[] bodies; </pre><p>このように書いたとき(もしくは自動生成した場合)</p><br /> <p><span style="color: #d32f2f">'body' は '<a class="keyword" href="http://d.hatena.ne.jp/keyword/%CC%BE%C1%B0%B6%F5%B4%D6">名前空間</a>' ですが、'型' のように使用されています。 </span></p><p>とエラーが出てしまうことがある</p><p>これは 'Body'が<a class="keyword" href="http://d.hatena.ne.jp/keyword/%CC%BE%C1%B0%B6%F5%B4%D6">名前空間</a>の名前とかぶってしまっているため、区別がつけられない状態となっている</p><p>なので、この場合はかぶらない名前を付けることで回避できる</p> <pre class="code lang-cs" data-lang="cs" data-unlink> <span class="synType">namespace</span> MyBody.test { <span class="synType">public</span> <span class="synStatement">partial</span> <span class="synType">class</span> MainWindow : Window { <span class="synType">private</span> Body[] bodies; </pre> omame6263 C#でマウス座標取得 hatenablog://entry/6653812171397843978 2016-05-24T11:16:30+09:00 2016-05-24T11:16:30+09:00 MouseMoveを利用したマウス座標の取得 using System.Windows.Forms; using System; namespace ConsoleApplication4 { class MousePos : Form { static void Main() { Application.Run(new MousePos()); } public MousePos() { this.Width = 400; this.Height = 400; this.MouseMove += new MouseEventHandler(posPrint); } private void … <p>MouseMoveを利用したマウス座標の取得<br /> <br /> </p> <pre class="code lang-cs" data-lang="cs" data-unlink> <span class="synStatement">using</span> System.Windows.Forms; <span class="synStatement">using</span> System; <span class="synType">namespace</span> ConsoleApplication4 { <span class="synType">class</span> MousePos : Form { <span class="synType">static</span> <span class="synType">void</span> Main() { Application.Run(<span class="synStatement">new</span> MousePos()); } <span class="synType">public</span> MousePos() { <span class="synStatement">this</span>.Width = <span class="synConstant">400</span>; <span class="synStatement">this</span>.Height = <span class="synConstant">400</span>; <span class="synStatement">this</span>.MouseMove += <span class="synStatement">new</span> MouseEventHandler(posPrint); } <span class="synType">private</span> <span class="synType">void</span> posPrint(<span class="synType">object</span> sender, MouseEventArgs e) { <span class="synStatement">this</span>.Text = <span class="synConstant">&quot;Pos: (&quot;</span> + e.X + <span class="synConstant">&quot;, &quot;</span> + e.Y + <span class="synConstant">&quot;)&quot;</span>; } } } </pre> omame6263 Unityをかじる(移動と回転) hatenablog://entry/8454420450092000940 2015-04-26T21:20:29+09:00 2016-11-06T23:35:08+09:00 あることがきっかけで、少しUnityをいじってみよう!という気になったので Unityについて忘れないようにメモ書きしていきたいなーとまた、スクリプトはC#で書くようにします。 しかし自分はC#を書いたことがないので、少しずつ勉強しつつ頑張ります。 とりあえず、スクリプトはこの形から書き始めればよいみたい using UnityEngine; using System.Collections; public class myscript : MonoBehaviour { // Use this for initialization void Start () { } // Update is… <p>あることがきっかけで、少しUnityをいじってみよう!という気になったので<br /> Unityについて忘れないようにメモ書きしていきたいなーと</p><p>また、<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EA%A5%D7%A5%C8">スクリプト</a>は<a class="keyword" href="http://d.hatena.ne.jp/keyword/C%23">C#</a>で書くようにします。<br /> しかし自分は<a class="keyword" href="http://d.hatena.ne.jp/keyword/C%23">C#</a>を書いたことがないので、少しずつ勉強しつつ頑張ります。</p><br /> <p>とりあえず、<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EA%A5%D7%A5%C8">スクリプト</a>はこの形から書き始めればよいみたい</p> <pre class="code lang-cs" data-lang="cs" data-unlink><span class="synStatement">using</span> UnityEngine; <span class="synStatement">using</span> System.Collections; <span class="synType">public</span> <span class="synType">class</span> myscript : MonoBehaviour { <span class="synComment">// Use this for initialization</span> <span class="synType">void</span> Start () { } <span class="synComment">// Update is called once per frame</span> <span class="synType">void</span> Update () { } } </pre><p>Startメソッドは開始時に1度読み込まれるだけなので、初期化用かな<br /> Updateメソッドはシーンごとに読み込まれるので、メインの処理はこちらに書くことになるかと。</p> <div class="section"> <h4>Rotate,Translate</h4> <pre class="code lang-cs" data-lang="cs" data-unlink><span class="synComment">//z軸に1ずつ回転</span> transform.Rotate (<span class="synConstant">0</span>, <span class="synConstant">0</span>, <span class="synConstant">1f</span>); <span class="synComment">//y軸方向に1ずつ移動</span> transform.Translate(<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">1f</span>); </pre><p>第4引数にSpace.Worldと入れると、ワールド座標での移動<br /> <br /> </p> <pre class="code lang-cs" data-lang="cs" data-unlink><span class="synComment">//Inspector内の入力欄valに応じた移動と回転</span> <span class="synStatement">using</span> UnityEngine; <span class="synStatement">using</span> System.Collections; <span class="synType">public</span> <span class="synType">class</span> test : MonoBehaviour { <span class="synType">public</span> <span class="synType">float</span> val; <span class="synComment">// Use this for initialization</span> <span class="synType">void</span> Start () { } <span class="synComment">// Update is called once per frame</span> <span class="synType">void</span> Update () { transform.Rotate (<span class="synConstant">0</span>, <span class="synConstant">0</span>, val); transform.Translate (<span class="synConstant">0</span>, <span class="synConstant">0</span>, val); } } </pre> </div> omame6263 スクレイピング+GPIOで気温計的な何か hatenablog://entry/8454420450089251322 2015-03-25T12:51:36+09:00 2015-03-28T13:18:11+09:00 ある場所の気温をスクレイピングで取得し、それをGPIOでLEDによる2進数表示気温計的な何かを作りました Motion 地点を入力 ex大阪府大阪市 など ↓ 気温を取得 ↓ LEDで2進数表示させる Site スクレイピング対象にするサイトはGoogleです。 また、気温は1時間ごとの更新っぽいのでループは1時間に1回します Tool ・RaspberryPi B+ ・ブレッドボード ・赤色LED φ5mm ・抵抗 100Ω ・ジャンパー線 Circuit 回路はこんな感じ Source #coding:utf-8 import mechanize from bs4 import Beaut… <p>ある場所の気温を<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EC%A5%A4%A5%D4%A5%F3%A5%B0">スクレイピング</a>で取得し、それをGPIOでLEDによる2進数表示気温計的な何かを作りました</p> <div class="section"> <h4>Motion</h4> <p>地点を入力 ex<a class="keyword" href="http://d.hatena.ne.jp/keyword/%C2%E7%BA%E5%C9%DC">大阪府</a><a class="keyword" href="http://d.hatena.ne.jp/keyword/%C2%E7%BA%E5%BB%D4">大阪市</a> など<br /> ↓<br /> 気温を取得<br /> ↓<br /> LEDで2進数表示させる</p> </div> <div class="section"> <h4>Site</h4> <p><a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EC%A5%A4%A5%D4%A5%F3%A5%B0">スクレイピング</a>対象にするサイトは<a class="keyword" href="http://d.hatena.ne.jp/keyword/Google">Google</a>です。<br /> また、気温は1時間ごとの更新っぽいのでループは1時間に1回します</p> </div> <div class="section"> <h4>Tool</h4> <p>・RaspberryPi B+<br /> ・ブレッドボード<br /> ・赤色LED φ5mm<br /> ・抵抗 100Ω<br /> ・ジャンパー線</p> </div> <div class="section"> <h4>Circuit</h4> <p>回路はこんな感じ<br /> <span itemscope itemtype="http://schema.org/Photograph"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/o/omame6263/20150325/20150325123900.jpg" alt="f:id:omame6263:20150325123900j:plain" title="f:id:omame6263:20150325123900j:plain" class="hatena-fotolife" itemprop="image"></span><br /> </p> </div> <div class="section"> <h4>Source</h4> <pre class="code lang-python" data-lang="python" data-unlink><span class="synComment">#coding:utf-8</span> <span class="synPreProc">import</span> mechanize <span class="synPreProc">from</span> bs4 <span class="synPreProc">import</span> BeautifulSoup <span class="synPreProc">import</span> time <span class="synPreProc">import</span> urllib br=mechanize.Browser() kion=<span class="synConstant">0</span> list_kion=[] <span class="synStatement">def</span> <span class="synIdentifier">tenki</span>(): <span class="synStatement">global</span> proname <span class="synStatement">global</span> kion proname=<span class="synIdentifier">raw_input</span>() point=proname+<span class="synConstant">&quot; 天気&quot;</span> br.addheaders = [(<span class="synConstant">'User-agent'</span>, <span class="synConstant">'Windows IE 9'</span>)] loc=urllib.quote(point) br.set_handle_robots(<span class="synIdentifier">False</span>) url=<span class="synConstant">&quot;https://www.google.co.jp/search?client=ubuntu&amp;channel=fs&amp;q=%s&amp;ie=utf-8&amp;oe=utf-8&amp;hl=ja&quot;</span>%loc res=br.<span class="synIdentifier">open</span>(url) soup=BeautifulSoup(res.read()) kion0=soup.find(<span class="synConstant">&quot;span&quot;</span>,{<span class="synConstant">&quot;class&quot;</span>:<span class="synConstant">&quot;wob_t&quot;</span>}) kion1=kion0.get_text() kion2=kion1.encode(<span class="synConstant">&quot;utf-8&quot;</span>) kion=kion2.replace(<span class="synConstant">&quot;°C&quot;</span>,<span class="synConstant">&quot;&quot;</span>) <span class="synIdentifier">print</span> <span class="synIdentifier">int</span>(kion) <span class="synStatement">global</span> list_kion <span class="synStatement">for</span> x <span class="synStatement">in</span> <span class="synIdentifier">format</span>(<span class="synIdentifier">int</span>(kion),<span class="synConstant">&quot;b&quot;</span>): list_kion.append(<span class="synIdentifier">int</span>(x)) <span class="synStatement">def</span> <span class="synIdentifier">GPIO</span>(): o=[<span class="synConstant">29</span>,<span class="synConstant">31</span>,<span class="synConstant">33</span>,<span class="synConstant">35</span>,<span class="synConstant">37</span>,<span class="synConstant">40</span>] <span class="synPreProc">import</span> RPi.GPIO <span class="synStatement">as</span> GPIO <span class="synStatement">global</span> list_kion GPIO.setmode(GPIO.BOARD) GPIO.setup(<span class="synConstant">29</span>,GPIO.OUT) GPIO.setup(<span class="synConstant">31</span>,GPIO.OUT) GPIO.setup(<span class="synConstant">33</span>,GPIO.OUT) GPIO.setup(<span class="synConstant">35</span>,GPIO.OUT) GPIO.setup(<span class="synConstant">37</span>,GPIO.OUT) GPIO.setup(<span class="synConstant">40</span>,GPIO.OUT) list_kion.reverse() <span class="synStatement">try</span>: <span class="synStatement">for</span> x <span class="synStatement">in</span> <span class="synIdentifier">range</span>(<span class="synConstant">6</span>): out=list_kion[x] GPIO.output(o[x],out) <span class="synStatement">except</span>: <span class="synStatement">pass</span> <span class="synStatement">while</span> <span class="synConstant">1</span>: tenki() GPIO() time.sleep(<span class="synConstant">3600</span>) list_kion=[<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>] GPIO() </pre><p>ちなみに、上記の回路図の向きでみたとき一番右のLEDが0ビット目です。</p><p>次は、別の色のLEDで「晴」「雨」「くもり」なども表示させてみようかなー</p> </div> omame6263 RaspberryPiでLチカ hatenablog://entry/8454420450089242946 2015-03-25T10:46:18+09:00 2015-03-25T10:47:21+09:00 GPIOをつかってLEDをチカチカさせます Tool ・RaspberryPi B+ ・ブレッドボード ・LED φ5mm ・抵抗 100Ω ・ジャンパー線 Circuit Source import RPi.GPIO as GPIO import time GPIO.setmode(GPIO.BOARD) GPIO.setup(40,GPIO.OUT) while 1: GPIO.output(40,True) time.sleep(1) GPIO.output(40,False) time.sleep(1) 次は、スクレイピングと組み合わせてちょっとしたものを作ってみます <p>GPIOをつかってLEDをチカチカさせます</p> <div class="section"> <h4>Tool</h4> <p>・RaspberryPi B+<br /> ・ブレッドボード<br /> ・LED φ5mm<br /> ・抵抗 100Ω<br /> ・ジャンパー線</p> </div> <div class="section"> <h4>Circuit</h4> <p><span itemscope itemtype="http://schema.org/Photograph"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/o/omame6263/20150325/20150325104404.jpg" alt="f:id:omame6263:20150325104404j:plain" title="f:id:omame6263:20150325104404j:plain" class="hatena-fotolife" itemprop="image"></span><br /> </p> </div> <div class="section"> <h4>Source</h4> <pre class="code lang-python" data-lang="python" data-unlink><span class="synPreProc">import</span> RPi.GPIO <span class="synStatement">as</span> GPIO <span class="synPreProc">import</span> time GPIO.setmode(GPIO.BOARD) GPIO.setup(<span class="synConstant">40</span>,GPIO.OUT) <span class="synStatement">while</span> <span class="synConstant">1</span>: GPIO.output(<span class="synConstant">40</span>,<span class="synIdentifier">True</span>) time.sleep(<span class="synConstant">1</span>) GPIO.output(<span class="synConstant">40</span>,<span class="synIdentifier">False</span>) time.sleep(<span class="synConstant">1</span>) </pre><p>次は、<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EC%A5%A4%A5%D4%A5%F3%A5%B0">スクレイピング</a>と組み合わせてちょっとしたものを作ってみます</p> </div> omame6263 BeautifulSoupでテキスト抽出 hatenablog://entry/8454420450089086023 2015-03-23T21:21:43+09:00 2015-03-23T21:21:43+09:00 Use 変数Hにはhtmlが入っているとして aタグ内のテキストを抽出します #coding:utf-8 from bs4 import BeautifulSoup H="html" soup=BeautifulSoup(H) for t in soup.findAll("a"): text=t.get_text() print text <div class="section"> <h4>Use</h4> <p>変数Hにはhtmlが入っているとして<br /> aタグ内のテキストを抽出します<br /> <br /> </p> <pre class="code lang-python" data-lang="python" data-unlink><span class="synComment">#coding:utf-8</span> <span class="synPreProc">from</span> bs4 <span class="synPreProc">import</span> BeautifulSoup H=<span class="synConstant">&quot;html&quot;</span> soup=BeautifulSoup(H) <span class="synStatement">for</span> t <span class="synStatement">in</span> soup.findAll(<span class="synConstant">&quot;a&quot;</span>): text=t.get_text() <span class="synIdentifier">print</span> text </pre> </div> omame6263 文字列を数値に変換 hatenablog://entry/8454420450089069239 2015-03-23T18:53:40+09:00 2015-03-24T18:02:21+09:00 int関数を使います 二進数に変換したいときは、format関数を組み合わせれば良いのかな(無理やりだけど) Use int("14") #14 #基数の指定 int("14",16) #E int("14",8) #12 #二進数にするとき(無理やりかも) x=format(int("14"),'b') int(x) #1110 スクレイピングするとどうしても文字列での取得が多いので、これは助かります <p>int関数を使います<br /> 二進数に変換したいときは、format関数を組み合わせれば良いのかな(無理やりだけど)<br /> <br /> </p> <div class="section"> <h4>Use</h4> <pre class="code lang-python" data-lang="python" data-unlink><span class="synIdentifier">int</span>(<span class="synConstant">&quot;14&quot;</span>) <span class="synComment">#14</span> <span class="synComment">#基数の指定</span> <span class="synIdentifier">int</span>(<span class="synConstant">&quot;14&quot;</span>,<span class="synConstant">16</span>) <span class="synComment">#E</span> <span class="synIdentifier">int</span>(<span class="synConstant">&quot;14&quot;</span>,<span class="synConstant">8</span>) <span class="synComment">#12</span> <span class="synComment">#二進数にするとき(無理やりかも)</span> x=<span class="synIdentifier">format</span>(<span class="synIdentifier">int</span>(<span class="synConstant">&quot;14&quot;</span>),<span class="synConstant">'b'</span>) <span class="synIdentifier">int</span>(x) <span class="synComment">#1110</span> </pre><p><a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EC%A5%A4%A5%D4%A5%F3%A5%B0">スクレイピング</a>するとどうしても文字列での取得が多いので、これは助かります</p> </div> omame6263 URLエンコード・デコード hatenablog://entry/8454420450089065745 2015-03-23T18:09:22+09:00 2015-03-23T18:09:22+09:00 urllibモジュールで簡単に行えるみたい Use #coding:utf-8 import urllib #エンコード print urllib.quote("hoge") print urllib.quote(u"hoge".encode("文字コード")) #デコード print urllib.unquote("hoge") <p>urllibモジュールで簡単に行えるみたい</p> <div class="section"> <h4>Use</h4> <pre class="code lang-python" data-lang="python" data-unlink><span class="synComment">#coding:utf-8</span> <span class="synPreProc">import</span> urllib <span class="synComment">#エンコード</span> <span class="synIdentifier">print</span> urllib.quote(<span class="synConstant">&quot;hoge&quot;</span>) <span class="synIdentifier">print</span> urllib.quote(<span class="synConstant">u&quot;hoge&quot;</span>.encode(<span class="synConstant">&quot;文字コード&quot;</span>)) <span class="synComment">#デコード</span> <span class="synIdentifier">print</span> urllib.unquote(<span class="synConstant">&quot;hoge&quot;</span>) </pre> </div> omame6263 スクレイピングでTwitterbotもどき hatenablog://entry/8454420450088610464 2015-03-19T18:45:10+09:00 2015-03-19T18:45:10+09:00 ツイートによりプロフィール名を変更するbotもどきをMechanizeとBeautifulSoup4によるスクレイピングで実現してみました Motion TLのツイートを監視 ↓ 「name setting 〜〜」というつぶやきを検出 ↓ 「〜〜」をプロフィール名に変更 ↓ 自分へのリプライで変更を通知 Site スクレイピングの対象とするサイトはTwitterの公式サイト、モバツイの2つです。 一定の時間間隔で更新するため、公式以外のサイトではAPI制限にかかる可能性が出てくる為、公式を利用。 また、プロフィール変更と自分へのリプライはモバツイから行います。(公式はうまくいかなかったので) … <p>ツイートによりプロフィール名を変更する<a class="keyword" href="http://d.hatena.ne.jp/keyword/bot">bot</a>もどきをMechanizeとBeautifulSoup4による<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EC%A5%A4%A5%D4%A5%F3%A5%B0">スクレイピング</a>で実現してみました<br /> <br /> <br /> </p> <div class="section"> <h4>Motion</h4> <p>TLのツイートを監視<br /> ↓<br /> 「name setting 〜〜」というつぶやきを検出<br /> ↓<br /> 「〜〜」をプロフィール名に変更<br /> ↓<br /> 自分へのリプライで変更を通知<br /> <br /> </p> </div> <div class="section"> <h4>Site</h4> <p><a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EC%A5%A4%A5%D4%A5%F3%A5%B0">スクレイピング</a>の対象とするサイトは<a class="keyword" href="http://d.hatena.ne.jp/keyword/Twitter">Twitter</a>の公式サイト、<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%E2%A5%D0%A5%C4%A5%A4">モバツイ</a>の2つです。<br /> 一定の時間間隔で更新するため、公式以外のサイトでは<a class="keyword" href="http://d.hatena.ne.jp/keyword/API">API</a>制限にかかる可能性が出てくる為、公式を利用。<br /> また、プロフィール変更と自分へのリプライは<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%E2%A5%D0%A5%C4%A5%A4">モバツイ</a>から行います。(公式はうまくいかなかったので)<br /> <br /> </p> </div> <div class="section"> <h4>Source</h4> <p>汚い書き方ですみません。<br /> <br /> </p> <pre class="code lang-python" data-lang="python" data-unlink> <span class="synComment">#coding:utf-8</span> <span class="synPreProc">import</span> mechanize <span class="synPreProc">from</span> bs4 <span class="synPreProc">import</span> BeautifulSoup <span class="synPreProc">import</span> re <span class="synPreProc">import</span> time br=mechanize.Browser() br.set_handle_robots(<span class="synIdentifier">False</span>) br.<span class="synIdentifier">open</span>(<span class="synConstant">&quot;http://s.movatwi.jp/oauth/redirect&quot;</span>) br.select_form(nr=<span class="synConstant">0</span>) <span class="synIdentifier">print</span> <span class="synConstant">&quot;ID: &quot;</span>, userid=<span class="synIdentifier">raw_input</span>() <span class="synIdentifier">print</span> <span class="synConstant">&quot;pass: &quot;</span> password=<span class="synIdentifier">raw_input</span>() br[<span class="synConstant">&quot;session[username_or_email]&quot;</span>]=userid br[<span class="synConstant">&quot;session[password]&quot;</span>]=password res=br.submit() soup=BeautifulSoup(res) br.<span class="synIdentifier">open</span>(<span class="synConstant">&quot;https://twitter.com/login/&quot;</span>) br.select_form(nr=<span class="synConstant">1</span>) br[<span class="synConstant">&quot;session[username_or_email]&quot;</span>]=userid br[<span class="synConstant">&quot;session[password]&quot;</span>]=password res0=br.submit() soup0=BeautifulSoup(res0) pro_url=<span class="synConstant">0</span> proname=<span class="synConstant">0</span> url=<span class="synConstant">0</span> p=<span class="synConstant">1</span> i=<span class="synConstant">0</span> <span class="synStatement">def</span> <span class="synIdentifier">TL</span>(): <span class="synStatement">global</span> soup0 <span class="synStatement">global</span> proname <span class="synStatement">for</span> tweets <span class="synStatement">in</span> soup0.findAll(<span class="synConstant">&quot;p&quot;</span>,{<span class="synConstant">&quot;class&quot;</span>:<span class="synConstant">&quot;js-tweet-text tweet-text&quot;</span>}): <span class="synStatement">for</span> tweet <span class="synStatement">in</span> tweets: tw=tweet.encode(<span class="synConstant">'utf-8'</span>) t=<span class="synIdentifier">str</span>(tw) s=re.search(<span class="synConstant">r'name setting(.+?)'</span>,t) <span class="synStatement">if</span> s <span class="synStatement">is</span> <span class="synIdentifier">None</span>: <span class="synStatement">pass</span> <span class="synStatement">else</span>: proname=tw.replace(<span class="synConstant">'name setting '</span>,<span class="synConstant">&quot;&quot;</span>) <span class="synStatement">global</span> i i=<span class="synConstant">1</span> <span class="synStatement">break</span> <span class="synStatement">if</span> i==<span class="synConstant">1</span>: <span class="synStatement">break</span> <span class="synStatement">def</span> <span class="synIdentifier">profile</span>(): <span class="synStatement">global</span> soup pro0=soup.find(<span class="synConstant">&quot;a&quot;</span>) <span class="synStatement">global</span> pro_url url=pro0.get(<span class="synConstant">&quot;href&quot;</span>) <span class="synIdentifier">print</span> url pro_url=<span class="synConstant">&quot;http://s.movatwi.jp&quot;</span>+url+<span class="synConstant">&quot;/profile&quot;</span> br.<span class="synIdentifier">open</span>(pro_url) br.select_form(nr=<span class="synConstant">1</span>) <span class="synStatement">global</span> proname br[<span class="synConstant">&quot;name&quot;</span>]=proname br.submit() <span class="synStatement">def</span> <span class="synIdentifier">tw_post</span>(): <span class="synStatement">global</span> soup <span class="synStatement">global</span> proname pos0=soup.find(<span class="synConstant">&quot;a&quot;</span>) url1=pos0.get(<span class="synConstant">&quot;href&quot;</span>) url0=<span class="synConstant">&quot;http://www.movatwi.jp&quot;</span>+url1+<span class="synConstant">&quot;?l=1&quot;</span> br.<span class="synIdentifier">open</span>(url0) br.select_form(nr=<span class="synConstant">0</span>) br[<span class="synConstant">&quot;message&quot;</span>]=<span class="synConstant">&quot;@hoge name changed 「%s」&quot;</span>%proname br.submit() <span class="synStatement">while</span> <span class="synConstant">1</span>: <span class="synStatement">try</span>: TL() <span class="synStatement">if</span> p!=proname: <span class="synIdentifier">print</span> proname profile() tw_post() p=proname <span class="synStatement">except</span>: <span class="synStatement">pass</span> res0=br.<span class="synIdentifier">open</span>(<span class="synConstant">&quot;https://twitter.com/&quot;</span>) soup0=BeautifulSoup(res0.read()) time.sleep(<span class="synConstant">10</span>) </pre><p><br /> お遊び程度ですが、一応動きました。<br /> textareaへの入力がうまくいけば公式でのツイートも可能なはずなんですが...</p> </div> omame6263 PythonでMechanize hatenablog://entry/8454420450088488097 2015-03-18T15:15:28+09:00 2015-03-18T15:15:28+09:00 Pythonでスクレイピングをしてみたいと思っていろいろ探していたらMechanizeというライブラリを見つけたので、その使い方などを。 Install pipでサクッとインストール # pip install mechanize Use #coding:utf-8 import mechanize br=mechanzie.Browser() br.set_handle_robots(False) #URLを開く html = br.open("URL") #HTMLを表示 print html.read() #フォームの選択 #0の部分はフォームの順番 br.select_form(nr=… <p><a class="keyword" href="http://d.hatena.ne.jp/keyword/Python">Python</a>で<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EC%A5%A4%A5%D4%A5%F3%A5%B0">スクレイピング</a>をしてみたいと思っていろいろ探していたらMechanizeというライブラリを見つけたので、その使い方などを。<br /> <br /> </p> <div class="section"> <h4>Install</h4> <p>pipでサクッとインストール</p> <pre class="code" data-lang="" data-unlink># pip install mechanize</pre> </div> <div class="section"> <h4>Use</h4> <pre class="code lang-python" data-lang="python" data-unlink><span class="synComment">#coding:utf-8</span> <span class="synPreProc">import</span> mechanize br=mechanzie.Browser() br.set_handle_robots(<span class="synIdentifier">False</span>) <span class="synComment">#URLを開く</span> html = br.<span class="synIdentifier">open</span>(<span class="synConstant">&quot;URL&quot;</span>) <span class="synComment">#HTMLを表示</span> <span class="synIdentifier">print</span> html.read() <span class="synComment">#フォームの選択</span> <span class="synComment">#0の部分はフォームの順番</span> br.select_form(nr=<span class="synConstant">0</span>) <span class="synComment">#フォームに入力</span> <span class="synComment">#input内のnameを&quot;&quot;内に</span> br[<span class="synConstant">&quot;name&quot;</span>]=<span class="synConstant">&quot;hoge&quot;</span> <span class="synComment">#フォームを送信</span> res = br.submit() <span class="synComment"># リンクを見つける</span> <span class="synComment">#hogeにはリンクの文字列を</span> br.find_link(text_regex = <span class="synConstant">u&quot;hoge&quot;</span>.encode(<span class="synConstant">&quot;utf-8&quot;</span>)) <span class="synComment"># リンクをクリック</span> br.follow_link(text_regex = <span class="synConstant">u&quot;hoge&quot;</span>.encode(<span class="synConstant">&quot;utf-8&quot;</span>)) </pre><p><br /> フォームの送信ができる部分が良いですね。<br /> ログインが必要なサイトなどを対象にする際には使いやすいです。</p><br /> <p>〜参考〜<br /> <a href="http://wiki.kurokobo.com/index.php?Python%2Fmechanize">Python/mechanize - kuro-tech</a></p> </div> omame6263 vimrcの場所 hatenablog://entry/8454420450088485392 2015-03-18T14:28:33+09:00 2015-03-18T14:28:33+09:00 よくvimrcの場所を忘れてしまうのでメモ # ~/.vimrc <p>よくvimrcの場所を忘れてしまうのでメモ</p> <pre class="code" data-lang="" data-unlink># ~/.vimrc</pre> omame6263 はじめに hatenablog://entry/8454420450088482110 2015-03-18T13:40:27+09:00 2015-03-19T11:06:29+09:00 勉強したことや、忘れそうなこととかを中心に書いていきたいと思います。超初心者なので間違いとかあるかもしれないですがよろしくお願いします。 <p>勉強したことや、忘れそうなこととかを中心に書いていきたいと思います。</p><p>超初心者なので間違いとかあるかもしれないですがよろしくお願いします。</p> omame6263