python爬虫学习之使用XPath解析开奖网站

实例需求:运用python语言爬取http://kaijiang.zhcw.com/zhcw/html/ssq/list_1.html这个开奖网站所有的信息,并且保存为txt文件。

实例环境:python3.7
       BeautifulSoup库、XPath(需手动安装)
       urllib库(内置的python库,无需手动安装)

实例网站:

  第一步,点击链接http://kaijiang.zhcw.com/zhcw/html/ssq/list_1.html进入网站,查看网站基本信息,注意一共要爬取118页数据。

  

  第二步,查看网页源代码,熟悉网页结构,标签等信息。

  

实例代码:

#encoding=utf-8
#pip install lxml
from bs4 import BeautifulSoup
import urllib.request
from lxml import etree

class GetDoubleColorBallNumber(object):
    def __init__(self):
        self.urls = []
        self.getUrls()
        self.items = self.spider(self.urls)
        self.pipelines(self.items)

    def getUrls(self):
        URL = r‘http://kaijiang.zhcw.com/zhcw/html/ssq/list.html‘
        htmlContent = self.getResponseContent(URL)
        soup = BeautifulSoup(htmlContent, ‘html.parser‘)
        tag = soup.find_all(‘p‘)[-1]
        pages = tag.strong.get_text()
        pages = ‘3‘
        for i in range(2, int(pages)+1):
            url = r‘http://kaijiang.zhcw.com/zhcw/html/ssq/list_‘ + str(i) + ‘.html‘
            self.urls.append(url)

    #3、	网络模块(NETWORK)
    def getResponseContent(self, url):
        try:
            response = urllib.request.urlopen(url)
        except urllib.request.URLError as e:
            raise e
        else:
            return response.read().decode("utf-8")

    #3、爬虫模块(Spider)
    def spider(self,urls):
        items = []
        for url in urls:
            try:
                html = self.getResponseContent(url)
                xpath_tree = etree.HTML(html)
                trTags = xpath_tree.xpath(‘//tr[not(@*)]‘)   # 匹配所有tr下没有任何属性的节点
                for tag in trTags:

                    # if tag.xpath(‘../html‘):
                    #     print("找到了html标签")
                    # if tag.xpath(‘/td/em‘):
                    #     print("****************")

                    #如果存在em子孙节点
                    if tag.xpath(‘./td/em‘):
                        item = {}
                        item[‘date‘] = tag.xpath(‘./td[1]/text()‘)[0]
                        item[‘order‘] = tag.xpath(‘./td[2]/text()‘)[0]
                        item[‘red1‘] = tag.xpath(‘./td[3]/em[1]/text()‘)[0]
                        item[‘red2‘] = tag.xpath(‘./td[3]/em[2]/text()‘)[0]
                        item[‘red3‘] = tag.xpath(‘./td[3]/em[3]/text()‘)[0]
                        item[‘red4‘] = tag.xpath(‘./td[3]/em[4]/text()‘)[0]
                        item[‘red5‘] = tag.xpath(‘./td[3]/em[5]/text()‘)[0]
                        item[‘red6‘] = tag.xpath(‘./td[3]/em[6]/text()‘)[0]
                        item[‘blue‘] = tag.xpath(‘./td[3]/em[7]/text()‘)[0]
                        item[‘money‘] = tag.xpath(‘./td[4]/strong/text()‘)[0]
                        item[‘first‘] = tag.xpath(‘./td[5]/strong/text()‘)[0]
                        item[‘second‘] = tag.xpath(‘./td[6]/strong/text()‘)[0]
                        items.append(item)
            except Exception as e:
                print(str(e))
                raise e
        return items

    def pipelines(self,items):
        fileName = u‘双色球.txt‘
        with open(fileName, ‘w‘) as fp:
            for item in items:
                fp.write(‘%s %s \t %s %s %s %s %s %s  %s \t %s \t %s %s \n‘
                      %(item[‘date‘],item[‘order‘],item[‘red1‘],item[‘red2‘],item[‘red3‘],item[‘red4‘],item[‘red5‘],item[‘red6‘],item[‘blue‘],item[‘money‘],item[‘first‘],item[‘second‘]))

if __name__ == ‘__main__‘:
    GDCBN = GetDoubleColorBallNumber()

实例结果:

  

  

原文地址:https://www.cnblogs.com/xiaoyh/p/10211646.html

时间: 2024-07-30 23:27:30

python爬虫学习之使用XPath解析开奖网站的相关文章

【Python爬虫学习实践】基于Beautiful Soup的网站解析及数据可视化

在上一次的学习实践中,我们以Tencent职位信息网站为例,介绍了在爬虫中如何分析待解析的网站结构,同时也说明了利用Xpath和lxml解析网站的一般化流程.在本节的实践中,我们将以中国天气网为例,并基于Beautiful Soup库对其进行数据解析,最后再简单说明pyecharts数据可视化. 中国天气网网址:http://www.weather.com.cn/textFC/hb.shtml 和之前的Tencent职位信息实践一样,我们先来分析一下我们所爬取的网站的结构.在中国天气网中,我们可

Python爬虫利器三之Xpath语法与lxml库的用法

前面我们介绍了 BeautifulSoup 的用法,这个已经是非常强大的库了,不过还有一些比较流行的解析库,例如 lxml,使用的是 Xpath 语法,同样是效率比较高的解析方法.如果大家对 BeautifulSoup 使用不太习惯的话,可以尝试下 Xpath. 参考文档: lxml python 官方文档 XPath语法参考 w3school 安装 pip install lxml 利用 pip 安装即可 XPath语法 XPath 是一门在 XML 文档中查找信息的语言.XPath 可用来在

Python爬虫学习路线,强烈建议收藏这十一条

(一)如何学习Python 学习Python大致可以分为以下几个阶段: 1.刚上手的时候肯定是先过一遍Python最基本的知识,比如说:变量.数据结构.语法等,基础过的很快,基本上1~2周时间就能过完了,我当时是在这儿看的基础:Python 简介 | 菜鸟教程 2.看完基础后,就是做一些小项目巩固基础,比方说:做一个终端计算器,如果实在找不到什么练手项目,可以在 Codecademy - learn to code, interactively, for free 上面进行练习. 如果时间充裕的

Python爬虫学习系列教程

Python爬虫学习系列教程 大家好哈,我呢最近在学习Python爬虫,感觉非常有意思,真的让生活可以方便很多.学习过程中我把一些学习的笔记总结下来,还记录了一些自己实际写的一些小爬虫,在这里跟大家一同分享,希望对Python爬虫感兴趣的童鞋有帮助,如果有机会期待与大家的交流. Python版本:2.7 一.爬虫入门 1. Python爬虫入门一之综述 2. Python爬虫入门二之爬虫基础了解 3. Python爬虫入门三之Urllib库的基本使用 4. Python爬虫入门四之Urllib库

Python爬虫学习:三、爬虫的基本操作流程

本文是博主原创随笔,转载时请注明出处Maple2cat|Python爬虫学习:三.爬虫的基本操作与流程 一般我们使用Python爬虫都是希望实现一套完整的功能,如下: 1.爬虫目标数据.信息: 2.将数据或信息存入数据库中: 3.数据展示,即在Web端进行显示,并有自己的分析说明. 这次我先介绍第一个功能中所需要实现的基本操作: 爬虫的基本操作:      表示必须步骤           表示可选步骤 导入爬虫所需要的库(如:urllib.urllib2.BeautifulSoup.Scrap

Python爬虫学习:四、headers和data的获取

之前在学习爬虫时,偶尔会遇到一些问题是有些网站需要登录后才能爬取内容,有的网站会识别是否是由浏览器发出的请求. 一.headers的获取 就以博客园的首页为例:http://www.cnblogs.com/ 打开网页,按下F12键,如下图所示: 点击下方标签中的Network,如下: 之后再点击下图所示位置: 找到红色下划线位置所示的标签并点击,在右边的显示内容中可以查看到所需要的headers信息. 一般只需要添加User-Agent这一信息就足够了,headers同样也是字典类型: user

2018/7/21 Python 爬虫学习

2018/7/21,这几天整理出来的一些Python 爬虫学习代码. import urllib2 response = urllib2.urlopen("http://baidu.com") html = response.read() print html 进一步,可以request import urllib2 req = urllib2.Request("http://www.baidu.com") response = urllib2.urlopen(re

开始我的Python爬虫学习之路

因为工作需要经常收集一些数据,我就想通过学爬虫来实现自动化完成比较重复的任务. 目前我Python的状况,跟着敲了几个教程,也算是懂点基础,具体比较深入的知识,是打算从做项目中慢慢去了解学习. 我是觉得如果一开始就钻细节的话,是很容易受到打击而放弃的,做点小项目让自己获得点成就感路才更容易更有信心走下去. 反正遇到不懂的就多查多问就对了. 知乎上看了很多关于入门Python爬虫的问答,给自己总结出了大概的学习方向. 基础: HTML&CSS,JOSN,HTTP协议(这些要了解,不太需要精通) R

Python爬虫学习一之Requests包使用方法

Requests函数库是学习Python爬虫必备之一, 能够帮助我们方便地爬取. 本文主要参考了其官方文档. Requests安装: requests目前的版本是v2.11.1, 在WINDOWS上可以通过命令行窗口(运行cmd命令), 利用pip进行自动地安装(很方便): > pip install requestsCollecting requests Downloading requests-2.11.1-py2.py3-none-any.whl <514kB>Installing