热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用Python3.x抓取58同城(南京站)的演出票的信息

1#!usrbinenvpython2#-*-coding:utf-8-*-3importre4importurllib.requestasrequest5f

 

 1 #!/usr/bin/env python
2 #-*-coding: utf-8 -*-
3 import re
4 import urllib.request as request
5 from bs4 import BeautifulSoup as bs
6 import csv
7 import os
8 import sys
9 from imp import reload
10 reload(sys)
11
12 def GetAllLink():
13 num = int(input("爬取多少页:>"))
14 if not os.path.exists('./data/'):
15 os.mkdir('./data/')
16
17 for i in range(num):
18 if i+1 == 1:
19 url = 'http://nj.58.com/piao/'
20 GetPage(url, i)
21 else:
22 url = 'http://nj.58.com/piao/pn%s/' %(i+1)
23 GetPage(url, i)
24
25
26 def GetPage(url, num):
27 Url = url
28 user_agent = 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:32.0) Gecko/20100101 Firefox/32.0'
29 headers = { 'User-Agent' : user_agent }
30 req = request.Request(Url, headers = headers)
31 page = request.urlopen(req).read().decode('utf-8')
32 soup = bs(page, "html.parser")
33 table = soup.table
34 tag = table.find_all('tr')
35 # 提取出所需的那段
36 soup2 = bs(str(tag), "html.parser")
37 title = soup2.find_all('a','t') #标题与url
38 price = soup2.find_all('b', 'pri') #价格
39 fixedprice = soup2.find_all('del') #原价
40 date = soup2.find_all('span','pr25') #时间
41
42 atitle = []
43 ahref = []
44 aprice = []
45 afixedprice = []
46 adate = []
47
48 for i in title:
49 #print i.get_text(), i.get('href')
50 atitle.append(i.get_text())
51 ahref.append(i.get('href'))
52 for i in price:
53 #print i.get_text()
54 aprice.append(i.get_text())
55 for i in fixedprice:
56 #print j.get_text()
57 afixedprice.append(i.get_text())
58 for i in date:
59 #print i.get_text()
60 adate.append(i.get_text())
61
62 csvfile = open('./data/ticket_%s.csv'%num, 'w')
63 writer = csv.writer(csvfile)
64 writer.writerow(['标题','url','售价','原价','演出时间'])
65 '''
66 每个字段必有title,但是不一定有时间date
67 如果没有date日期,我们就设为'---'
68 '''
69 if len(atitle) > len(adate):
70 for i in range(len(atitle) - len(adate)):
71 adate.append('---')
72 for i in range(len(atitle) - len(afixedprice)):
73 afixedprice.append('---')
74 for i in range(len(atitle) - len(aprice)):
75 aprice.append('---')
76
77 for i in range(len(atitle)):
78 message = atitle[i]+'|'+ahref[i]+'|'+aprice[i]+ '|'+afixedprice[i]+'|'+ adate[i]
79 writer.writerow([i for i in str(message).split('|')])
80 print ("[Result]:> 页面 %s 信息保存完毕!"%(num+1))
81 csvfile.close()
82
83
84 if __name__ == '__main__':
85 GetAllLink()

参考地址


推荐阅读
  • x86 linux的进程调度,x86体系结构下Linux2.6.26的进程调度和切换
    进程调度相关数据结构task_structtask_struct是进程在内核中对应的数据结构,它标识了进程的状态等各项信息。其中有一项thread_struct结构的 ... [详细]
  • Apache Shiro 身份验证绕过漏洞 (CVE202011989) 详细解析及防范措施
    本文详细解析了Apache Shiro 身份验证绕过漏洞 (CVE202011989) 的原理和影响,并提供了相应的防范措施。Apache Shiro 是一个强大且易用的Java安全框架,常用于执行身份验证、授权、密码和会话管理。在Apache Shiro 1.5.3之前的版本中,与Spring控制器一起使用时,存在特制请求可能导致身份验证绕过的漏洞。本文还介绍了该漏洞的具体细节,并给出了防范该漏洞的建议措施。 ... [详细]
  • CSS|网格-行-结束属性原文:https://www.gee ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • 本文介绍了九度OnlineJudge中的1002题目“Grading”的解决方法。该题目要求设计一个公平的评分过程,将每个考题分配给3个独立的专家,如果他们的评分不一致,则需要请一位裁判做出最终决定。文章详细描述了评分规则,并给出了解决该问题的程序。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • Python语法上的区别及注意事项
    本文介绍了Python2x和Python3x在语法上的区别,包括print语句的变化、除法运算结果的不同、raw_input函数的替代、class写法的变化等。同时还介绍了Python脚本的解释程序的指定方法,以及在不同版本的Python中如何执行脚本。对于想要学习Python的人来说,本文提供了一些注意事项和技巧。 ... [详细]
  • 本文介绍了如何在给定的有序字符序列中插入新字符,并保持序列的有序性。通过示例代码演示了插入过程,以及插入后的字符序列。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 本文介绍了UVALive6575题目Odd and Even Zeroes的解法,使用了数位dp和找规律的方法。阶乘的定义和性质被介绍,并给出了一些例子。其中,部分阶乘的尾零个数为奇数,部分为偶数。 ... [详细]
  • 猜字母游戏
    猜字母游戏猜字母游戏——设计数据结构猜字母游戏——设计程序结构猜字母游戏——实现字母生成方法猜字母游戏——实现字母检测方法猜字母游戏——实现主方法1猜字母游戏——设计数据结构1.1 ... [详细]
  • 服务器上的操作系统有哪些,如何选择适合的操作系统?
    本文介绍了服务器上常见的操作系统,包括系统盘镜像、数据盘镜像和整机镜像的数量。同时,还介绍了共享镜像的限制和使用方法。此外,还提供了关于华为云服务的帮助中心,其中包括产品简介、价格说明、购买指南、用户指南、API参考、最佳实践、常见问题和视频帮助等技术文档。对于裸金属服务器的远程登录,本文介绍了使用密钥对登录的方法,并提供了部分操作系统配置示例。最后,还提到了SUSE云耀云服务器的特点和快速搭建方法。 ... [详细]
  • PeopleSoft安装镜像版本及导入语言包的方法
    本文介绍了PeopleSoft安装镜像的两个版本,分别是VirtualBox虚拟机版本和NativeOS版本,并详细说明了导入语言包的方法。对于Windows版本,可以通过psdmt.exe登录进入,并使用datamover脚本导入语言包。对于Linux版本,同样可以使用命令行方式执行datamover脚本导入语言包。导入语言包后,可以实现多种语言的登录。参考文献提供了相关链接以供深入了解。 ... [详细]
  • python+selenium十:基于原生selenium的二次封装fromseleniumimportwebdriverfromselenium.webdriv ... [详细]
author-avatar
三千仇人-奈我何
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有