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. def GetPage(url, num):
  26. Url = url
  27. user_agent = 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:32.0) Gecko/20100101 Firefox/32.0'
  28. headers = { 'User-Agent' : user_agent }
  29. req = request.Request(Url, headers = headers)
  30. page = request.urlopen(req).read().decode('utf-8')
  31. soup = bs(page, "html.parser")
  32. table = soup.table
  33. tag = table.find_all('tr')
  34. # 提取出所需的那段
  35. soup2 = bs(str(tag), "html.parser")
  36. title = soup2.find_all('a','t') #标题与url
  37. price = soup2.find_all('b', 'pri') #价格
  38. fixedprice = soup2.find_all('del') #原价
  39. date = soup2.find_all('span','pr25') #时间
  40.  
  41. atitle = []
  42. ahref = []
  43. aprice = []
  44. afixedprice = []
  45. adate = []
  46.  
  47. for i in title:
  48. #print i.get_text(), i.get('href')
  49. atitle.append(i.get_text())
  50. ahref.append(i.get('href'))
  51. for i in price:
  52. #print i.get_text()
  53. aprice.append(i.get_text())
  54. for i in fixedprice:
  55. #print j.get_text()
  56. afixedprice.append(i.get_text())
  57. for i in date:
  58. #print i.get_text()
  59. adate.append(i.get_text())
  60.  
  61. csvfile = open('./data/ticket_%s.csv'%num, 'w')
  62. writer = csv.writer(csvfile)
  63. writer.writerow(['标题','url','售价','原价','演出时间'])
  64. '''
  65. 每个字段必有title,但是不一定有时间date
  66. 如果没有date日期,我们就设为'---'
  67. '''
  68. if len(atitle) > len(adate):
  69. for i in range(len(atitle) - len(adate)):
  70. adate.append('---')
  71. for i in range(len(atitle) - len(afixedprice)):
  72. afixedprice.append('---')
  73. for i in range(len(atitle) - len(aprice)):
  74. aprice.append('---')
  75.  
  76. for i in range(len(atitle)):
  77. message = atitle[i]+'|'+ahref[i]+'|'+aprice[i]+ '|'+afixedprice[i]+'|'+ adate[i]
  78. writer.writerow([i for i in str(message).split('|')])
  79. print ("[Result]:> 页面 %s 信息保存完毕!"%(num+1))
  80. csvfile.close()
  81.  
  82. if __name__ == '__main__':
  83. GetAllLink()

参考地址

使用Python3.x抓取58同城(南京站)的演出票的信息的更多相关文章

  1. python3爬虫-爬取58同城上所有城市的租房信息

    from fake_useragent import UserAgent from lxml import etree import requests, os import time, re, dat ...

  2. python3.4学习笔记(十三) 网络爬虫实例代码,使用pyspider抓取多牛投资吧里面的文章信息,抓取政府网新闻内容

    python3.4学习笔记(十三) 网络爬虫实例代码,使用pyspider抓取多牛投资吧里面的文章信息PySpider:一个国人编写的强大的网络爬虫系统并带有强大的WebUI,采用Python语言编写 ...

  3. 使用python抓取58手机维修信息

    之前在ququ的博客上看到说 python 中的BeautifulSoup 挺好玩的,今天下午果断下载下来,看了下api,挺好用的,完了2把,不错. 晚上写了一个使用python抓取58手机维修信息的 ...

  4. 利用python爬取58同城简历数据

    利用python爬取58同城简历数据 利用python爬取58同城简历数据 最近接到一个工作,需要获取58同城上面的简历信息(http://gz.58.com/qzyewu/).最开始想到是用pyth ...

  5. 笔趣看小说Python3爬虫抓取

    笔趣看小说Python3爬虫抓取 获取HTML信息 解析HTML信息 整合代码 获取HTML信息 # -*- coding:UTF-8 -*- import requests if __name__ ...

  6. scrapy爬取58同城二手房问题与对策

    测试环境: win10,单机爬取,scrapy1.5.0,python3.6.4,mongodb,Robo 3T 其他准备: 代理池:测试环境就没有用搭建的flask抓代理,因为我找到的几个免费网站有 ...

  7. Python开发网络爬虫抓取某同城房价信息

    前言: 苦逼的我从某某城市换到另一个稍微大点的某某城市,面临的第一个问题就是买房,奋斗10多年,又回到起点,废话就不多说了,看看如何设计程序把某同城上的房价数据抓取过来. 方案:方案思路很简单,先把网 ...

  8. 养只爬虫当宠物(Node.js爬虫爬取58同城租房信息)

    先上一个源代码吧. https://github.com/answershuto/Rental 欢迎指导交流. 效果图 搭建Node.js环境及启动服务 安装node以及npm,用express模块启 ...

  9. python3.4+pyspider爬58同城(二)

    之前使用python3.4+selenium实现了爬58同城的详细信息,这次用pyspider实现,网上搜了下,目前比较流行的爬虫框架就是pyspider和scrapy,但是scrapy不支持pyth ...

随机推荐

  1. web前端安全的三个关键点

    一.浏览器的同源策略 同源策略:不同域的客户端脚本在未经授权的情况下不能读写对方的资源. 这里有几个关键词:域.脚本.授权.读写.资源 1.同域要求两个站点:同协议.同域名.同端口.下表展示了所列站点 ...

  2. Nginx反向代理时tomcat日志获取真实IP

    对于nginx+tomcat这种架构,如果后端tomcat配置保持默认,那么tomcat的访问日志里,记录的就是前端nginx的IP地址,而不是真实的访问IP.因此,需要对nginx.tomcat做如 ...

  3. ubuntu14.04后安装win10记录

    1首先修改启动引导顺序,从U盘启动, 2自动安装,产生一个问题,gpt分区无法安装,解决方法,感谢https://jingyan.baidu.com/article/08b6a591c82df414a ...

  4. google image

    google图片抓取 google图片是base64加密的,而且base64后的信息放在script信息里面 import pymysql from lxml import etree import ...

  5. InfluxDB时序数据库应用场景

    目前了解到的InfluxDB时序数据库应用场景:如在数据库中有很多条记录,有的记录包含了时间字段time和数值字段water_level,有的只有时间字段time SELECT MAX("w ...

  6. 清除 idea 缓存

    idea最好选择  付费版本 ,稳定一点~ 不要选择社区版 1.问题使用idea启动项目时,报如下错误:Intellij Error: Internal caches are corrupted or ...

  7. windows的cmd下面格式化某个盘符

    1.crl+R 输入cmd回车. 2.如果要格式化的是E盘,哪直接输入 在DOS窗口中输入“format  f: “ ,其中:format 为格式化命令,f: 为需要格式化的分区

  8. User-Defined Components Must Be Capitalized

    [User-Defined Components Must Be Capitalized] When an element type starts with a lowercase letter, i ...

  9. spring boot IDEA 开发微服务

    本文是参考:https://blog.csdn.net/u011001084/article/details/79040701  的基础上自己实际操作编写. 在我们开始创建微服务之前,需要安装Cons ...

  10. jenkin 不必要的Execute shell执行失败,导致jenkins都失败的解决

    问题:jenkins里配置了多个执行shell,且有后续的执行job任务.但其中一个Execute shell执行失败了导致后续的shell都不执行了 而这个失败的shell并不是一定要执行   解决 ...