爬取完会自动生成csv电子表格文件,含有房价、押付、链接等信息

环境
py2.7
pip install lxml
pip install cssselect
 
 #coding:utf-8
import csv
import urllib2
import lxml.html
import time
import sys
from lxml.cssselect import CSSSelector
import threading
reload(sys)
sys.setdefaultencoding('utf8') print "请输入要爬取得城市简称例如bj(北京):"
CITY=str(raw_input(">>>"))
def download(url, user_agent='Google', num_retries=2): headers = {'User-agent': user_agent}
request = urllib2.Request(url, headers=headers)
try:
html = urllib2.urlopen(request).read()
except urllib2.URLError as e:
html = None
if num_retries > 0:
if hasattr(e, 'code') and 500 <= e.code < 600:
return download(url, num_retries-1)
return html def get_data(url):
html_text_detail = download(url)
try:
tree = lxml.html.fromstring(html_text_detail)
house_ext = CSSSelector('div.house-pay-way > span:nth-child(3)')
house_title = CSSSelector('div.main-wrap > div.house-title > h1')
house_pay_way1 = CSSSelector('div.house-pay-way > span:nth-child(1)')
house_pay_way2 = CSSSelector('div.house-pay-way > span:nth-child(2)')
print house_title(tree)[0].text_content()
print '%s|%s' % (house_pay_way1(tree)[0].text_content(), house_pay_way2(tree)[0].text_content()) for i in range(7):
for j in range(2):
css = 'div.house-desc-item > ul.f14 > li:nth-child(%s) > span:nth-child(%s)' % (i+1, j+1)
house_info = CSSSelector(css)
data = [
('标题 : ',house_title(tree)[0].text_content(), '#',url),
('价格: ',house_pay_way1(tree)[0].text_content(), '#'),
('压付: ',house_pay_way2(tree)[0].text_content(), '#'),
('详情: ',house_info(tree)[0].text_content().replace(' ', ''), '#')]
with open('%s_houses.csv'%CITY,'ab+') as csvfile:
writer = csv.writer(csvfile,lineterminator='\n')
writer.writerows(data) except TypeError as e:
pass
except IndexError as e:
pass def get_url(html):
tree = lxml.html.fromstring(html)
sel = CSSSelector('div.mainbox > div.main > div.content > div.listBox > ul.listUl > li > div.des > h2 > a')
url_list = []
for i in sel(tree):
if i.get('href') not in url_list:
url_list.append(i.get('href'))
return url_list if __name__ == '__main__':
url_index = 'http://%s.58.com/chuzu/'%CITY
html_text_list = download(url_index)
url_list = get_url(html_text_list) for url_detail in url_list:
thr = threading.Thread(target=get_data, args=(url_detail,))
thr.start() time.sleep(0.001)

py58.py

Python 爬58同城 城市租房信息的更多相关文章

  1. 利用python爬取贝壳网租房信息

    最近准备换房子,在网站上寻找各种房源信息,看得眼花缭乱,于是想着能否将基本信息汇总起来便于查找,便用python将基本信息爬下来放到excel,这样一来就容易搜索了. 1. 利用lxml中的xpath ...

  2. Python 爬取赶集网租房信息

    代码已久,有可能需要调整 #coding:utf-8 from bs4 import BeautifulSoup #有这个bs4不用正则也可以定位要爬取的内容了 from urlparse impor ...

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

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

  4. python爬虫项目(scrapy-redis分布式爬取房天下租房信息)

    python爬虫scrapy项目(二) 爬取目标:房天下全国租房信息网站(起始url:http://zu.fang.com/cities.aspx) 爬取内容:城市:名字:出租方式:价格:户型:面积: ...

  5. 关于python的中国历年城市天气信息爬取

    一.主题式网络爬虫设计方案(15分)1.主题式网络爬虫名称 关于python的中国城市天气网爬取 2.主题式网络爬虫爬取的内容与数据特征分析 爬取中国天气网各个城市每年各个月份的天气数据, 包括最高城 ...

  6. Python爬取房天下二手房信息

    一.相关知识 BeautifulSoup4使用 python将信息写入csv import csv with open("11.csv","w") as csv ...

  7. python爬取北京政府信件信息01

    python爬取,找到目标地址,开始研究网页代码格式,于是就开始根据之前学的知识进行爬取,出师不利啊,一开始爬取就出现了个问题,这是之前是没有遇到过的,明明地址没问题,就是显示网页不存在,于是就在百度 ...

  8. 用Python爬取智联招聘信息做职业规划

    上学期在实验室发表时写了一个爬取智联招牌信息的爬虫. 操作流程大致分为:信息爬取——数据结构化——存入数据库——所需技能等分词统计——数据可视化 1.数据爬取 job = "通信工程师&qu ...

  9. python爬取 “得到” App 电子书信息

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 静觅 崔庆才 PS:如有需要Python学习资料的小伙伴可以加点击下 ...

随机推荐

  1. UVa Live 4794 - Sharing Chocolate 枚举子集substa = (s - 1) & substa,记忆化搜索 难度: 2

    题目 https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_pr ...

  2. 自动化测试-14.selenium加载FireFox配置

    前言 有小伙伴在用脚本启动浏览器时候发现原来下载的插件不见了,无法用firebug在打开的页面上继续定位页面元素,调试起来不方便 . 加载浏览器配置,需要用FirefoxProfile(profile ...

  3. Flask关于请求表单的粗浅应用及理解+简单SQL语句温习

    1.请求表单 请求表单的知识点是flask数据请求中很小的一部分,首先要了解一下GET和POST请求:http://www.w3school.com.cn/tags/html_ref_httpmeth ...

  4. testDecoration

    def count(): fs = [] for i in range(1,4): def f(): n=i*i return n fs.append(f) return fs c1,c2,c3 = ...

  5. 一个页面从输入url到加载完成的过程都发生了什么,请详细说明

    1.首先,在浏览器地址栏中输入url 2.浏览器先查看浏览器缓存-系统缓存-路由器缓存,如果缓存中有,会直接在屏幕中显示页面内容.若没有,则跳到第三步操作 3.在发送http请求前,需要域名解析(DN ...

  6. 关于eclipse项目创建maven项目目录不正常的解决方案

    最近学习ssh和maven,遇到了很多问题····首先一个很基础的问题就是我搭建的maven项目目录和教程上的不一样.我的目录之前是这样的: 而教程里的是这样的========> 因为是跟着视频 ...

  7. alpha冲刺(3/10)

    前言 队名:旅法师 作业链接 队长博客 燃尽图 会议 会议照片 会议内容 陈晓彬(组长) 今日进展: 召开会议 安排任务 博客撰写 制定计划 问题困扰: 前后端的交互沟通有点缺失,以至后端进度很慢,需 ...

  8. [JLOI2011]不重复数字

    原题链接 题解 题目大意:给出N个数,要求把其中重复的去掉,只保留第一次出现的数.最后按顺序输出N <= 50000 然这题是个哈希的典型题目 HASH,我对于它的理解就是一个桶%一个数,当然并 ...

  9. 将文本转化为Numpy的矩阵

    def file2matrix(filename): fr = open(filename) numberOfLines = len(fr.readlines()) #get the number o ...

  10. PythonStudy——算术运算符 Arithmetic operator

    # 减法 # 加法 print(10 + 20) print('abc' + 'def') print([1, 2, 3] + [4, 5, 6]) Output: 30  abcdef  [1, 2 ...