博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python爬虫学习之使用XPath解析开奖网站
阅读量:5244 次
发布时间:2019-06-14

本文共 3421 字,大约阅读时间需要 11 分钟。

实例需求:运用python语言爬取这个开奖网站所有的信息,并且保存为txt文件。

实例环境:python3.7

       BeautifulSoup库、XPath(需手动安装)
       urllib库(内置的python库,无需手动安装)

实例网站:

  第一步,点击链接进入网站,查看网站基本信息,注意一共要爬取118页数据。

  

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

  

实例代码:

#encoding=utf-8#pip install lxmlfrom bs4 import BeautifulSoupimport urllib.requestfrom lxml import etreeclass 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

你可能感兴趣的文章
使用 Apache Pig 处理数据6
查看>>
Hadoop集群内lzo的安装与配置
查看>>
CASS 7.1 和 AutoCAD 2006的安装使用
查看>>
supervisor之启动rabbitmq报错原因
查看>>
Struts2工作原理
查看>>
二 、Quartz 2D 图形上下文栈
查看>>
[Leetcode Week8]Edit Distance
查看>>
针对sl的ICSharpCode.SharpZipLib,只保留zip,gzip的流压缩、解压缩功能
查看>>
ASP.NET 3.5构建Web 2.0门户站点
查看>>
PP tables for production order
查看>>
oam系统安装,windows操作系统注册列表影响系统安装
查看>>
[scrum]2011/9/25-----第五天
查看>>
《人月神话》有感,好书,推荐
查看>>
IE浏览器打开chorme浏览器,如何打开其他浏览器
查看>>
GNU 内联汇编
查看>>
【转】代码中特殊的注释技术——TODO、FIXME和XXX的用处
查看>>
php提交表单校验例子
查看>>
man查看帮助命令
查看>>
【SVM】libsvm-python
查看>>
mysql 修改已存在的表增加ID属性为auto_increment自动增长
查看>>