Python:配当を受ける株

3552 ワード

中国証券網のホームページに今日の取引のヒントがあって、中には配当の株式の登録日があります
誰がどのくらいの株式を保有しているかを登録する日は、当日の終値を基準に、終値でその株を保有している場合は、配当、転増の権利を有する.
今日は配当が見られますが、配当率が高いなら、手に入れてみてください.
以前はBeautifulSoupで解析していましたが、速度が遅いことがわかり、今回はlxmlでxpathで解析しました.
XPathの説明:
何ですか.XML Path Languageと呼ばれる小型のクエリー言語XPathはゲート言語であり、1)XMLで情報を検索できる2)HTMLの検索をサポートする3)要素と属性でナビゲートできる利点があると言わざるを得ない
XPathの簡単な呼び出し方法
from lxml import etree
selector=etree.HTML(  )  #        XPath     
selector.xpath(   )  #      

XPathの使い方
4つのラベルの使用方法
  • //ダブルスラッシュはルートノードを位置決めし、全文をスキャンし、ドキュメント内で条件に合致するすべての内容を選択し、リスト形式で返します.
  • /シングルスラッシュ現在のラベルパスの次のパスラベルを探すか、または現在のパスラベルの内容を操作する
  • .
  • /text()現在のパスのテキストコンテンツ
  • を取得する.
  • /@xxxx現在のパスの下にあるラベルの属性値
  • を抽出
  • |オプション使用|は、//p|//divのような複数のパスを選択することができ、すなわち、現在のパスの下で条件を満たすすべてのpラベルおよびdivラベルを選択することができる.
  • . ポイント現在のノード
  • を選択するためのポイント
  • .. 2点現在のノードの親ノード
  • を選択
    前の質問に戻りますが、BeautifulSoupでhtmlを読み取り、lxmlで解析します.
    #! /usr/bin/env python
    #coding=utf-8
    from bs4 import BeautifulSoup as BS
    import random
    import urllib2
    import sys
    import chardet
    import time
    import os
    from lxml import etree
    
    reload(sys)
    sys.setdefaultencoding('utf-8')
    
    sub_folder = os.path.join(os.getcwd(), "transaction_hint")
    if not os.path.exists(sub_folder):
        os.mkdir(sub_folder)
    os.chdir(sub_folder)
    
    my_userAgent = [
            'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50',
            'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50',
            'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0',
            'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0)',
            'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)',
            'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)',
            'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:2.0.1) Gecko/20100101 Firefox/4.0.1',
            'Mozilla/5.0 (Windows NT 6.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1',
            'Opera/9.80 (Macintosh; Intel Mac OS X 10.6.8; U; en) Presto/2.8.131 Version/11.11',
            'Opera/9.80 (Windows NT 6.1; U; en) Presto/2.8.131 Version/11.11',
            'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Maxthon 2.0)',
            'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_0) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11',
            'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; 360SE)',
            'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; SE 2.X MetaSr 1.0; SE 2.X MetaSr 1.0; .NET CLR 2.0.50727; SE 2.X MetaSr 1.0)']
    
    user_agent = random.choice(my_userAgent)
    headers = {'User-Agent': user_agent, 'Host': "xinpi.cnstock.com", 
               'DNT': '1',
               'Accept': 'text/html, application/xhtml+xml, */*', }
    
    
    proxy_support = urllib2.ProxyHandler({"http":"http://your_proxy:8080/"})
    opener = urllib2.build_opener(proxy_support)
    urllib2.install_opener(opener)
    #
    transaction_news_site = "http://xinpi.cnstock.com/"
    #print transaction_news_site
    req = urllib2.Request(url=transaction_news_site, headers=headers)
    resp = urllib2.urlopen(req)
    html = resp.read()
    
    selector = etree.HTML(html)
    content = selector.xpath('//ul[@class="jc-fl-list"][2]/li/a/text()')
    for i in content:
            print str(i)