在中国证券网主页有个今日交易提示,里面有个分红转增股权登记日
登记谁持有多少股份的日子,以当天收盘时为准,收盘时持有该股的,享有分红、转增的权利。
可以看到今日有那些股票分红,如果股息率很高的话,可以入手试试。
之前是用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的使用方法
四种标签的使用方法
- // 双斜杠 定位根节点,会对全文进行扫描,在文档中选取所有符合条件的内容,以列表的形式返回。
- / 单斜杠 寻找当前标签路径的下一层路径标签或者对当前路标签内容进行操作
- /text() 获取当前路径下的文本内容
- /@xxxx 提取当前路径下标签的属性值
- | 可选符 使用|可选取若干个路径 如//p | //div 即在当前路径下选取所有符合条件的p标签和div标签。
- . 点 用来选取当前节点
- .. 双点 选取当前节点的父节点
回到之前的问题,还是使用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)